【问题标题】:I want show upload percent我要显示上传百分比
【发布时间】:2019-05-23 03:31:40
【问题描述】:

我有一个用户可以上传文件的应用程序。现在它有效。 他们可以上传文件并在服务器端接收。 现在我想在上传时向用户显示上传百分比。 我使用下面的代码在服务器上上传文件。

这是我的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();
    }
}

请帮我添加上传百分比。
谢谢你

【问题讨论】:

    标签: java android file-upload progress-bar


    【解决方案1】:

    你在这里做错了很多事情:

    1. 负责上传文件的逻辑不应位于onActivityResult()
    2. 你应该把它分成不同的方法
    3. 使用这样的线程不是一个好主意

    如果你想上传文件或大文件,你应该在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.htmlhttps://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 来获取此类信息。

    【讨论】:

    • 感谢您的关注和指导。但我没有要求为我编写代码。我确实在这里发布了我的代码,并希望获得帮助以找到它的进度条。如果我知道应该如何实施,我从不寻求帮助。我什至不知道我的解决方案不是一个好主意,如果我不问而你不回答,我将继续走错路。我真的很感谢你的回复,但我不是一个懒惰的人。我在伊朗处理我的代码,对访问源有所有限制。我只是期待尊重。谢谢。
    • 我给了你所有需要的信息来编写你需要编写的代码。剩下要做的就是阅读并输入此链接。
    • 是的,谢谢。我正在尝试编辑我的代码以得到您的回答。非常感谢。我只是说要尊重。
    • 大卫·贾姆罗伊,你好。你能给我介绍一些关于它的资源或 youtube 视频吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多