我有像这样使用multipart上传的代码,在这段代码中我添加了进度条
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);
}
但是当我运行此代码时,进度条没有显示progressBar没有更新进程。我只看到%0和%100。怎么解决这个?你可以帮忙吗?
感谢
答案 0 :(得分:0)
您上传的数据有多大(以字节为单位)?它可能很小,只有一次调用进度监听器:它何时完成。
答案 1 :(得分:0)
您的totalSize
可能为0,请尝试在您的publishProgress
还尝试记录此totalSize = reqEntity.getContentLength();