2012-08-14 70 views
1

我怎樣才能獲得完成上傳的百分比 併爲我的進度條做了進度更新。如何獲得完成上傳的百分比

我正在添加我的上傳代碼。 我在異步任務中使用它。

請大家幫忙。 謝謝

ileInputStream fileInputStream = new FileInputStream(sourceFile); 
        URL url   = new URL(upLoadServerUri); 
        conn    = (HttpURLConnection) url.openConnection(); // Open a HTTP connection to the URL 
        conn.setDoInput(true); // Allow Inputs 
        conn.setDoOutput(true); // Allow Outputs 
        conn.setUseCaches(false); // Don't use a Cached Copy 
        conn.setRequestMethod("POST"); 
        conn.setRequestProperty("Connection", "Keep-Alive"); 
        conn.setRequestProperty("ENCTYPE", "multipart/form-data"); 
        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
        conn.setRequestProperty("uploaded_file", fileName); 
        dos  = new DataOutputStream(conn.getOutputStream()); 

        dos.writeBytes(twoHyphens + boundary + lineEnd); 
        dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""+ fileName + "\"" + lineEnd); 
        dos.writeBytes(lineEnd); 
         Log.i("buffer", "jgf"+fileInputStream.read()); 


        bytesAvailable = fileInputStream.available(); // create a buffer of maximum size 
        bufferSize  = Math.min(bytesAvailable, maxBufferSize); 
        buffer   = new byte[bufferSize]; 

        // read file and write it into form... 
        bytesRead  = fileInputStream.read(buffer, 0, bufferSize); 

        while (bytesRead > 0) 
        { 
         dos.write(buffer, 0, bufferSize); 
         bytesAvailable =  fileInputStream.available(); 
         bufferSize  =  Math.min(bytesAvailable, maxBufferSize); 
         bytesRead  =  fileInputStream.read(buffer, 0, bufferSize); 
} 

dos.writeBytes(lineEnd); 
         dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

        // Responses from the server (code and message) 
        serverResponseCode = conn.getResponseCode(); 
        String serverResponseMessage = conn.getResponseMessage(); 

        Log.i("uploadFile", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode); 

        if(serverResponseCode == 200){ 
         runOnUiThread(new Runnable() { 
           public void run() { 

            Toast.makeText(getApplicationContext(), "File Upload Complete.", Toast.LENGTH_SHORT).show();        
            dialog.dismiss(); 

           } 
          });     
        }  

        //close the streams // 
        fileInputStream.close(); 
        dos.flush(); 
        dos.close(); 

回答

0

你應該利用AsynchTask及其publishProgress()。如果您四處搜索,可以找到很多示例,例如this

+0

其實我正在尋找一個上傳進度。並且我得到的所有代碼都只是將進度移動到99%,然後等待下載完成 – Rahul 2012-08-16 07:20:20

+0

那麼,您知道總大小爲bytesAvailable,並且每次都會寫入bufferSize字節。在每次寫入之後,您可以執行'publishProgress(totalBytesWritten * 100/bytesAvailable)',其中totalBytesWritten每次增加'bufferSize'。 – ekholm 2012-08-16 10:35:47

+0

謝謝。得到它了。 – Rahul 2012-08-17 06:17:34