Created
September 24, 2013 06:56
-
-
Save moltak/6681204 to your computer and use it in GitHub Desktop.
Upload large file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public String sendFileToServer(String filename, String targetUrl) { | |
String response = "error"; | |
Log.e("Image filename", filename); | |
Log.e("url", targetUrl); | |
HttpURLConnection connection = null; | |
DataOutputStream outputStream = null; | |
// DataInputStream inputStream = null; | |
String pathToOurFile = filename; | |
String urlServer = targetUrl; | |
String lineEnd = "\r\n"; | |
String twoHyphens = "--"; | |
String boundary = "*****"; | |
DateFormat df = new SimpleDateFormat("yyyy_MM_dd_HH:mm:ss"); | |
int bytesRead, bytesAvailable, bufferSize; | |
byte[] buffer; | |
int maxBufferSize = 1 * 1024; | |
try { | |
FileInputStream fileInputStream = new FileInputStream(new File( | |
pathToOurFile)); | |
URL url = new URL(urlServer); | |
connection = (HttpURLConnection) url.openConnection(); | |
// Allow Inputs & Outputs | |
connection.setDoInput(true); | |
connection.setDoOutput(true); | |
connection.setUseCaches(false); | |
connection.setChunkedStreamingMode(1024); | |
// Enable POST method | |
connection.setRequestMethod("POST"); | |
connection.setRequestProperty("Connection", "Keep-Alive"); | |
connection.setRequestProperty("Content-Type", | |
"multipart/form-data;boundary=" + boundary); | |
outputStream = new DataOutputStream(connection.getOutputStream()); | |
outputStream.writeBytes(twoHyphens + boundary + lineEnd); | |
String connstr = null; | |
connstr = "Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" | |
+ pathToOurFile + "\"" + lineEnd; | |
Log.i("Connstr", connstr); | |
outputStream.writeBytes(connstr); | |
outputStream.writeBytes(lineEnd); | |
bytesAvailable = fileInputStream.available(); | |
bufferSize = Math.min(bytesAvailable, maxBufferSize); | |
buffer = new byte[bufferSize]; | |
// Read file | |
bytesRead = fileInputStream.read(buffer, 0, bufferSize); | |
Log.e("Image length", bytesAvailable + ""); | |
try { | |
while (bytesRead > 0) { | |
try { | |
outputStream.write(buffer, 0, bufferSize); | |
} catch (OutOfMemoryError e) { | |
e.printStackTrace(); | |
response = "outofmemoryerror"; | |
return response; | |
} | |
bytesAvailable = fileInputStream.available(); | |
bufferSize = Math.min(bytesAvailable, maxBufferSize); | |
bytesRead = fileInputStream.read(buffer, 0, bufferSize); | |
} | |
} catch (Exception e) { | |
e.printStackTrace(); | |
response = "error"; | |
return response; | |
} | |
outputStream.writeBytes(lineEnd); | |
outputStream.writeBytes(twoHyphens + boundary + twoHyphens | |
+ lineEnd); | |
// Responses from the server (code and message) | |
int serverResponseCode = connection.getResponseCode(); | |
String serverResponseMessage = connection.getResponseMessage(); | |
Log.i("Server Response Code ", "" + serverResponseCode); | |
Log.i("Server Response Message", serverResponseMessage); | |
if (serverResponseCode == 200) { | |
response = "true"; | |
} | |
String CDate = null; | |
Date serverTime = new Date(connection.getDate()); | |
try { | |
CDate = df.format(serverTime); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
Log.e("Date Exception", e.getMessage() + " Parse Exception"); | |
} | |
Log.i("Server Response Time", CDate + ""); | |
filename = CDate | |
+ filename.substring(filename.lastIndexOf("."), | |
filename.length()); | |
Log.i("File Name in Server : ", filename); | |
fileInputStream.close(); | |
outputStream.flush(); | |
outputStream.close(); | |
outputStream = null; | |
} catch (Exception ex) { | |
// Exception handling | |
response = "error"; | |
Log.e("Send file Exception", ex.getMessage() + ""); | |
ex.printStackTrace(); | |
} | |
return response; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment