I have an app in Android witch takes a picture and needs to upolad it to a server with php.
At first there was no problem, I was able to upload it, but now I need to pass the path where the picture will be uploaded to the server. The problems comes when I try to send two values.
I am using the following code:
private void httpPostFileUpload(String fpath, String uPath){ HttpURLConnection connection = null; DataOutputStream outputStream = null; DataInputStream inputStream = null; //Path where to upload String uploadPath = uPath; String pathToOurFile = fpath; Log.v("file path",fpath.toString()); String urlServer = "http://leojg.alwaysdata.net/tests/androidConnect/handle_upload.php"; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; String fname = ""; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1*1024*1024; try { File f = new File(pathToOurFile); fname = f.getName(); FileInputStream fileInputStream = new FileInputStream(f); URL url = new URL(urlServer); connection = (HttpURLConnection) url.openConnection(); // Allow Inputs & Outputs connection.setDoInput(true); connection.setDoOutput(true); connection.setUseCaches(false); // 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); Log.d("path file", pathToOurFile); Log.d("path up", uploadPath); outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile + "\"" + lineEnd); outputStream.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // Read file bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { outputStream.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } 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.d("amanda", "upload async finished, server response : " + serverResponseMessage); fileInputStream.close(); fileInputStream = null; outputStream.flush(); outputStream.close(); outputStream = null; f= null; parent.invokeJs("pictureUploadEnded('" + fname + "')"); this.delete(fpath); } catch (Exception ex) { Log.d("amanda", "exception uploading image : " + ex.getMessage()); } } I am pretty sure that the problem is in this line
outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile + "\"" + lineEnd); Which is the one that makes the post body. I dont know where to attrach uploadPath