0

このようなマルチパートを使用してアップロードするコードがあります。このコードでは、進行状況バーを追加しています

protected String doInBackground(String... args) {

            namapro = inputtitle.getText().toString();
            hargapro = inputprice.getText().toString();
            despro= inputdes.getText().toString();
            orderpro = inputorder.getText().toString();
            path = getIntent().getStringExtra("pathimage");         

            product.setTitle(namapro);
            product.setPrice(hargapro);
            product.setDesc(despro);
            product.setHow(orderpro);
            product.setImage(path);

                try{    

                    CustomMultipartEntity multipartContent = new CustomMultipartEntity(new ProgressListener()
                    {
                        @Override
                        public void transferred(long num)
                        {
                            int upload = ((int)((num/(float)totalSize)*100));
                            String progress = String.valueOf(upload);
                            publishProgress(progress);
                        }
                    });

                HttpEntity resEntity;
                HttpContext httpContext = new BasicHttpContext();
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost post = new HttpPost(Constants.url_create_product);
                MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
                File file= new File(path);
                FileBody bin = new FileBody(file);

                reqEntity.addPart("phone", new StringBody(mPhoneNumber));
                reqEntity.addPart("prod_title", new StringBody(namapro));
                reqEntity.addPart("prod_price", new StringBody(hargapro));
                reqEntity.addPart("prod_desc", new StringBody(despro));
                reqEntity.addPart("prod_order", new StringBody(orderpro));
                reqEntity.addPart("prod_image", bin);
                totalSize = reqEntity.getContentLength();
                post.setEntity(reqEntity);
                HttpResponse response = httpClient.execute(post);
                resEntity = response.getEntity();
                String response_str = EntityUtils.toString(resEntity);
                Gson gson = new Gson();
                gson.toJson(response_str);

                if (resEntity != null) {
                     //Log.i("RESPONSE",response_str);
                     runOnUiThread(new Runnable(){
                         public void run() {
                             try {


                                if(daftar.equalsIgnoreCase("2")){// sudah connect fb twitter
                                    Intent i = new Intent(productdetail.this, home.class);
                                    Toast.makeText(getApplicationContext(), "Upload success", Toast.LENGTH_LONG).show();

                                    startActivity(i);
                                    finish();
                                }
                                else if(daftar.equalsIgnoreCase("1")){ // belum connect fb dan twitter
                                    dialog();
                                }
                             }catch (Exception e) {
                                    e.printStackTrace();

                            }

                        }
                         });
                     }

            }catch (Exception ex){
                 Log.e("Debug", "error: " + ex.getMessage(), ex);
                 dialog_gagal();  
            }

            return null;  
        }                       

            protected void onPostExecute(String file_url) {
                    // dismiss the dialog once done
                    pDialog.dismiss();
            }   

            protected void onProgressUpdate(Integer...progress){
                pDialog.setProgress((int) (progress[0]));
                //pDialog.setProgress(pDialog.getMax()-bytesAvailable);
            } 

しかし、このコードを実行すると、プログレスバーにプログレスバーがプロセスで更新されていないことが表示されませんでした。%0 と %100 しか表示されません。これを解決するには?? あなたは助けることができますか?

ありがとう

4

2 に答える 2

0

アップロードするデータのサイズ (バイト単位) は? 非常に小さいため、進捗リスナーが一度だけ呼び出される場合があります: 終了時です。

于 2012-10-31T06:48:06.490 に答える
0

おそらく 0 です。publishProgresstotalSizeでログアウトしてみてください

これもログに記録してみてくださいtotalSize = reqEntity.getContentLength();

于 2012-11-20T10:55:54.387 に答える