I use this tutorial to upload large files, but it cannot even load 300 KB of file. It also does not download anything other than *.txt or *.log files. Need pointers that can help me upload large files regardless of file types.
Changed code sharing
public class MultipartUtility { private final String boundary private static final String LINE_FEED = "\r\n" private HttpURLConnection httpConn private String charset private OutputStream outputStream private PrintWriter writer public MultipartUtility(String requestURL, String charset) throws IOException { this.charset = charset // creates a unique boundary based on time stamp boundary = "===" + System.currentTimeMillis() + "===" URL url = new URL(requestURL) httpConn = (HttpURLConnection) url.openConnection() httpConn.setUseCaches(false) httpConn.setDoOutput(true) // indicates POST method httpConn.setDoInput(true) httpConn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary) httpConn.setRequestProperty("User-Agent", "CodeJava Agent") httpConn.setRequestProperty("Test", "Bonjour") outputStream = httpConn.getOutputStream() writer = new PrintWriter(new OutputStreamWriter(outputStream, charset), true) } public void addFormField(String name, String value) { writer.append("--" + boundary).append(LINE_FEED) writer.append("Content-Disposition: form-data; name=\"" + name + "\"").append(LINE_FEED) writer.append("Content-Type: text/plain; charset=" + charset).append(LINE_FEED) writer.append(LINE_FEED) writer.append(value).append(LINE_FEED) writer.flush() } public void addFilePart(String fieldName, File uploadFile) throws IOException { String fileName = uploadFile.getName() writer.append("--" + boundary).append(LINE_FEED) writer.append("Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + fileName + "\"").append(LINE_FEED) writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(fileName)).append(LINE_FEED) writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED) writer.append(LINE_FEED) writer.flush() FileInputStream inputStream = new FileInputStream(uploadFile) byte[] buffer = new byte[4096] int bytesRead = -1 while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead) } outputStream.flush() inputStream.close() writer.append(LINE_FEED) writer.flush() } public void addHeaderField(String name, String value) { writer.append(name + ": " + value).append(LINE_FEED) writer.flush() } public List<String> finish() throws IOException { List<String> response = new ArrayList<String>() writer.append(LINE_FEED).flush() writer.append("--" + boundary + "--").append(LINE_FEED) writer.close() // checks server status code first int status = httpConn.getResponseCode() //<- Exception coming in this line java.io.IOException: Error writing to server if (status == HttpURLConnection.HTTP_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader( httpConn.getInputStream())) String line = null while ((line = reader.readLine()) != null) { response.add(line) } reader.close() httpConn.disconnect() } else { throw new IOException("Server returned non-OK status: " + status) } return response } static main(args) { String charset = "UTF-8"; File uploadFile1 = new File("C:\\1392943434245.xml"); String requestURL = "http://localhost:10060/testme"; try { MultipartUtility multipart = new MultipartUtility(requestURL, charset); multipart.addFilePart("fileUpload", uploadFile1); List<String> response = multipart.finish(); println("SERVER REPLIED:"); for (String line : response) { System.out.println(line); } } catch (IOException ex) { System.err.println(ex); } } }
java groovy multipart
abi1964 Sep 15 '14 at 14:12 2014-09-15 14:12
source share