The file does not upload to the server

I upload an audio file from an Android application to a server. The download code works on my side, but the file does not receive the download on the server. Here is the code I'm using. I also commented on the code by which the file was uploaded. there is a code:

public void UploadFile(String path, String id) { HttpURLConnection connection = null; DataOutputStream outputStream = null; String pathToOurFile = "" + path; String urlServer = "http://txtapi.com/musicApp/uploadfile.php?fileId=" + id + "&sharedBy=" + sp.getString(CommonUtility.phone, CommonUtility.getPhoneNumber(ct)); String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; 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); // 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); outputStream.writeBytes("Content-Disposition: form-data; name=\"fileId\";filename=\"" + path + "\"" + lineEnd); outputStream.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); // Read file // bytesRead = fileInputStream.read(buffer, 0, bufferSize);//file is getting upload by this code // int i =0; // while (bytesRead > 0) // { // i++; // // outputStream.write(buffer, 0, bufferSize); // bytesAvailable = fileInputStream.available(); // bufferSize = Math.min(bytesAvailable, maxBufferSize); // bytesRead = fileInputStream.read(buffer, 0, bufferSize); // } buffer = new byte[1024]; int bufferLength = 0; while ((bufferLength = fileInputStream.read(buffer)) > 0) { //add the data in the buffer to the file in the file output stream (the file on the sd card Log.i("bytes available ", "" + fileInputStream.available()); Log.i("buffer length", "" + bufferLength); outputStream.write(buffer); //add up the size so we know how much is downloaded } outputStream.writeBytes(lineEnd); outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) fileInputStream.close(); outputStream.flush(); outputStream.close(); } catch (Exception ex) { ex.printStackTrace(); BugSenseHandler.setLogging(true); //Exception handling Log.i("Inside catch of ", "Inside catch of upload "); BugSenseHandler.sendException(ex); } finally { System.gc(); } } 
+4
source share
1 answer

The number of bytes read should be the number of bytes written to the output stream, so change it to the following:

  while ((bufferLength = fileInputStream.read(buffer)) > 0) { //add the data in the buffer to the file in the file output stream (the file on the sd card Log.i("bytes available ", "" + fileInputStream.available()); Log.i("buffer length", "" + bufferLength); outputStream.write(buffer, 0, bufferLength); //add up the size so we know how much is downloaded } 
+1
source

All Articles