我有一个可以让用户上传文件的应用程序。现在就可以了。 他们可以上传文件,并在服务器端收到文件。 现在,我想在上传时向用户显示上传百分比。 我使用以下代码在服务器上上传文件。
这是我的Java代码:
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
new MaterialFilePicker().
withActivity(AddActivity.this).
withRequestCode(10).
start();
}
catch (Exception e){
return;
}
}
});
这是我的方法:
ProgressDialog进度;
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
if (requestCode==10 && resultCode==RESULT_OK){
progress = new ProgressDialog(AddActivity.this);
progress.setTitle("Uploading");
progress.setMessage("please wait...");
progress.show();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
File f = new File(data.getStringExtra(FilePickerActivity.RESULT_FILE_PATH));
String content_type = getMimeType(f.getPath());
String file_path = f.getAbsolutePath();
file_size = String.valueOf(f.length()/1024);
OkHttpClient client = new OkHttpClient();
RequestBody file_body = RequestBody.create(MediaType.parse(content_type),f);
RequestBody request_body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("type",content_type)
.addFormDataPart("upload_file",code+file_path.substring(file_path.lastIndexOf(".")),file_body)
.build();
code2 = code+file_path.substring(file_path.lastIndexOf("."));
Request request = new Request.Builder()
.url("http://api.mysite.com/api/uploadfile")
.post(request_body)
.build();
try {
Response response = client.newCall(request).execute();
Log.d("msg",request_body.toString());
Log.d("msg",f.getPath().toString());
Log.d("msg",getMimeType(f.getPath()));
Log.d("msg33",code+file_path.substring(file_path.lastIndexOf(".")));
if (!response.isSuccessful()){
throw new IOException(("Error:"+response));
}
progress.dismiss();
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
}
}
请帮助我增加上传百分比。
谢谢
答案 0 :(得分:0)
您在这里做错了很多事情:
onActivityResult()
如果您要上传文件或大文件,则应在IntentService
类中进行操作(您将必须创建自己的类并扩展IntentService
),这适用于诸如那。我建议您学习Retrofit2和OkHttp库,因为它会使它变得更加容易。
您可以在此处找到其中一种方法的示例:Is it possible to show progress bar when upload image via Retrofit 2?
在stackoverflow上要求ppl为您完全编写代码不是提高技能的好方法。检查我给您的链接。
祝你好运
编辑:
Android服务:http://www.vogella.com/tutorials/AndroidServices/article.html和https://developer.android.com/training/run-background-service/create-service
改造2:http://www.vogella.com/tutorials/Retrofit/article.html
OkHttp:https://www.journaldev.com/13629/okhttp-android-example-tutorial
示例:Is it possible to show progress bar when upload image via Retrofit 2?
这些链接提供了编写此功能所需的所有信息。我在YouTube上没有这样的视频。我从不使用YouTube获取此类信息。