android - 使用 HTTP 400 进行改造和分段图像上传

标签 android file-upload retrofit bad-request

我快要哭了,因为我尝试了很多解决方案和主题,但不起作用。

问题: 我必须将一个字符串(它是一个位图,但我进行了 Base64 编码)上传到我们可爱的服务器,因此我在 Android 中创建了一个后台线程来执行此操作,并调用后端。我收到 HTTP 400 错误消息,其中包含以下消息:

org.springframework.web.bind.MissingServletRequestParameterException","message":"Required MultipartFile parameter 'file' is not present","path":"/backend/newimage"}.

我的标题:

Content-Disposition: form-data; name="file"
Content-Type: text/plain; charset=UTF-8
Content-Length: 24069
Content-Transfer-Encoding: binary
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA0JCgsK.......etc.....binary

我在标题中没有看到以下部分:

enctype: "multipart/form-data”). and I don`t understand why, my retforit interce looks like this:

@POST("/newimage")
@Multipart
String uploadImageToIdea(@Query("id") String id, @Part("file") String file );

我不明白错误消息,因为我这里有文件参数。

我尝试了以下方法(显然不起作用:

我的调用后端的代码(不是最终版本,但首先让事情正常工作:)):

   new Thread() {
                @Override
                public void run() {
                    MultipartTypedOutput file = new MultipartTypedOutput();
                    for (int i = 0; i < imagesToUpload.size(); ++i) {
                        Bitmap imageBitmap = imagesToUpload.get(i);
                        ByteArrayOutputStream stream = new ByteArrayOutputStream();

                        imageBitmap.compress(Bitmap.CompressFormat.JPEG, 60, stream);
                        byte[] byteArray = stream.toByteArray();
                        String bitmapString = Base64.encodeToString(byteArray, Base64.DEFAULT);
                        backend.uploadImageToIdea(submitIdeaResponse.getIdeaDetails().getId(), bitmapString);
                    }
                }
            }.start();

我的后端开发人员的注释:

You need to send a multipart request (enctype="multipart/form-data”).

那么,有人可以帮我解决一下,为什么我有 HTTP 400 并显示上述错误消息吗?我可以在代码中更改哪些内容才能使此调用正常工作? 谢谢

最佳答案

您应该使用TypedFile用于以多部分形式发送文件。

@Multipart
@POST("/newimage")
String uploadImageToIdea(@Part("id") TypedString id, @Part("file") TypedFile file);

了解更多信息link .

关于android - 使用 HTTP 400 进行改造和分段图像上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121212/

相关文章:

android - 在 AWS android 改造上上传文件时出错

java - 如何使用for循环连续图像 slider ?

Android:如何同时同步播放 2 个媒体文件

java - 在 AlertDialogFragment 中通过 Bundle 传递监听器 - 这可能吗?

ruby-on-rails - Ruby on Rails 与 Plupload

android - <输入类型 ="file"> 在我的 WebView 中不起作用

android - 与模拟器和 Web 相比,真实 Android 设备中的 Retrofit 响应时间更慢

android - Android 上的 'Context' 是什么?

javascript - 删除输入多个的选定文件名

android - 如何在 strip 上上传图片?