How to get the download status when loading data from an array of bytes to a PHP server?

I upload image files from the device to the PHP server, converting the file to an array of bytes. I upload files to the server using android-async-http-1.3.1.jar in my application.

http://loopj.com/android-async-http/

What I want is to show in the progress bar how many bytes of the byte array were loaded. Now the problem is how can I find out how many bytes were loaded at boot time. Need help on this issue with ideas / examples / codes. Thanks in advance guys.

+4
source share
1 answer

Finally, I did it. I did this using file input / output stream inside the AsyncTask class. Below, I gave the code to download the file and showing that in progress bar ......

class ImageUploadTask extends AsyncTask<Void, Void, String> { @Override protected void onPreExecute() { pb.setVisibility(View.VISIBLE); } @Override protected String doInBackground(Void... unused) { String twoHyphens = "--"; String boundary = "*****" + Long.toString(System.currentTimeMillis()) + "*****"; String lineEnd = "\r\n"; 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=\"image\";filename=\"" + pathToOurFile +"\"" + lineEnd); outputStream.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); Log.v("Size",bytesAvailable+""); pb.setProgress(0); pb.setMax(bytesAvailable); //Log.v("Max",pb.getMax()+""); 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(); Log.v("Available",bytesAvailable+""); publishProgress(); 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) serverResponseCode = connection.getResponseCode(); serverResponseMessage = connection.getResponseMessage(); System.out.println(serverResponseMessage); fileInputStream.close(); outputStream.flush(); outputStream.close(); } catch (Exception ex) { //Exception handling } //publishProgress(); return null; } @Override protected void onProgressUpdate(Void... unsued) { super.onProgressUpdate(unsued); pb.setProgress(pb.getMax()-bytesAvailable); } @Override protected void onPostExecute(String sResponse) { //if(pb.getProgress()>= pb.getMax()) pb.setVisibility(View.INVISIBLE); } } 
+3
source

Source: https://habr.com/ru/post/1381255/


All Articles