Retrofit okHttp 上传图片总是不行

这是Retrofit接口代码

clipboard.png

Retrofit 调用代码
clipboard.png

Retrofit怎么弄都不行 不能成功,但是我用 ( useLibrary 'org.apache.http.legacy')的httpclient可以上传,以下是调用方法:

clipboard.png

这是php服务器端接收图片代码

clipboard.png

阅读 11.1k
6 个回答

我是这样写的 @Part("image\"; filename=\"image.png\" ") RequestBody image

  Map<String, RequestBody> photoRequestBodyMap = new HashMap<>();


        photoRequestBodyMap.put("Content", RequestBody.create(MediaType.parse("text/plain"), et_body.getText().toString()));

        for (int i = 0; i < picList.size(); i++) {
        
                File file = new File(picList.get(i));
                RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);
                
                String key = "image\";filename=\"" + file.getName();
                photoRequestBodyMap.put(key, requestBody);
                
            } catch (Exception e) {
            }
        }


        netApiInterface
                .postMoment(photoRequestBodyMap)

我是这样的。

关于图片上传时要用的key,网上有多种说法。
我这边,实测 String key = "image";filename="" + file.getName();可行

方法注解只使用POST,参数注解也只使用BODY,以及单独构造MultipartBody进行上传。
retrofit2.0对上传文件支持并不那么简洁,应该去熟悉okhttp

如果你用的是Retrofit2.0 那 Part注解后面 后面应该是MultipartBody.Part 而不是RequestBody

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题