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();
4

1 回答 1

0

你应该使用AsynchTask和它的publishProgress(). 如果您四处搜索,您可以找到很多示例,例如this

于 2012-08-14T14:25:20.357 回答