当前位置: 首页 > 知识库问答 >
问题:

如何使用okhttp[duplicate]通过Uri而不是Android Q中的文件上传照片

袁鸿达
2023-03-14

我正在使用Okhttp(com.squareup.okhttp3:Okhttp:3.12.10)使用以下代码将照片上传到服务器

MultipartBody.Builder builder = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("imageType", Img_tag)
                    .addFormDataPart("created", Calendar.getInstance().getTime() + "")
                    .addFormDataPart("comment", comment + ""))

            for (int i = 0; i < IMG_PATHs.size(); count = ++i) {
                String IMG_Name = IMG_PATHs.get(i).substring(IMG_PATHs.get(i).lastIndexOf("/") + 1);
                String IMG_Extention = IMG_Name.substring((IMG_Name.lastIndexOf(".") + 1));

                builder.addFormDataPart("imageFile" + i, IMG_Name,
                        RequestBody.create(MEDIA_TYPE, new File(IMG_PATHs.get(i))))
                        .addFormDataPart("ext" + i, IMG_Extention);
            }
            builder.addFormDataPart("count", count + "");
            MultipartBody requestBody = builder.build();
            Request request = new Request.Builder()
                    .url(PTHOT_UPLOAD_PATH)
                    .post(requestBody)
                    .build();

现在,在我更新到android Q中的作用域存储后,我有了一个Uri列表,我应该对这个上传照片的请求做什么更改?

共有1个答案

魏航
2023-03-14

这是在发表评论后解决的:InputStreamRequest estbody。

https://github.com/square/okhttp/issues/3585#issuecomment-327319196

 类似资料:
  • 它应该很简单:我必须发送文件和一些字符串值。但我想不出怎么做。 根据我发现的一些样本,我首先尝试了以下内容: 它给我一个“400错误请求”错误。 我做错了什么? 编辑:顺便说一句,上面的“getfile()”返回一个File对象。其余的参数都是字符串和int。

  • 在Android中使用OKHTTP以多部分方式上传单个大文件(更具体地说,上传到s3)时,我有什么选择?

  • 问题内容: 无法将图片上传到。现在,如果选择的文件是,我希望能够将文件转换为并将转换后的文件上传到。我能够在转换到与仅如果我给了文件的路径。如何从中访问上载的文件?下面是我的代码: 我正在尝试像这样访问上载的文件: 因为在函数中传递了一个参数。 我的表格: 我在过程的哪一部分转换文件? 请帮忙。非常感谢。 问题答案: 您正在尝试在本地处理文件。该文件必须是您服务器的文件系统,或者至少要在上公开可用

  • 我正在尝试从sdcard拍摄照片,它是工作的情况下,当用户选择从谷歌照片,但给出一个curserindexoutofbound错误时,从任何其他应用程序,如gallery或file Manager。这是一段代码。 OnActivity Result`{if(requestCode==PICK_IMAGE_REQUEST&&resultCode==activity.result_ok&data!=n

  • 问题内容: 我想使用Ajax通过模式上传文件。我怎样才能做到这一点? 我的模态: 这是我的JavaScript文件: 这是我的控制器: 但它返回错误500。我认为Ajax不接受使用Bootstrap模式的文件上传。 问题答案: 您可以像这样通过ajax使用引导程序模式上载文件。 在表单标签中,使用属性enctype和html如下所示: js代码: 在您的控制器端,您可以执行以下功能来上传图像。