扫码关注官方订阅号
光阴似箭催人老,日月如移越少年。
我用的 retrofit 版本是 2.1.0。
方法这样定义; @Multipart @POST(NetUrlConstant.URL_UPLOAD_PHOTO) Call<UploadPhotoBean> uploadPhoto(@PartMap Map<String, RequestBody> map); 传入的是个 Map ,下面来创建这个 map : File file = new File("图片路径"); Map<String, RequestBody> map = new HashMap<>(); map.put("api_key", parseRequestBody("你的参数值"); map.put("api_secret", parseRequestBody("你的参数值"); map.put("iamge_url", parseRequestBody("你的参数值"); map.put("return_landmark", parseRequestBody(你的 int 值+""));//int 也转成 string 生成 Body, 服务端取下来是 int ; map.put("return_attributes", parseRequestBody("你的参数值"); map.put(RetrofitManager.parseImageMapKey("image_file",file.getName()),parseImageRequestBody(file));//这里是你的文件。 上面用到封装的几个方法 : public static RequestBody parseRequestBody(String value) { return RequestBody.create(MediaType. parse("text/plain"), value); } public static RequestBody parseImageRequestBody(File file) { return RequestBody.create(MediaType. parse("image/*"), file); } public static String parseImageMapKey(String key, String fileName) { return key + "\"; filename=\"" + fileName; }
这个应该是上传图片的情况吧,参数像description,具体看后台需要什么字段添加,不过很奇怪为什么要上传文件又要上传路径,直接上传路径不行?如果是七牛的话,直接上传后拿到地址再提交,还可以加后缀获取缩略图,大概是这样,应该没错,仅供参考
RequestBody description =RequestBody.create( MediaType.parse("multipart/form-data"), description); File file = new File(filepath);// RequestBody requestBody =RequestBody.create( MediaType.parse("multipart/form-data"), file); @Multipart @POST("[接口地址]") Call<ShowResultBean> upload( @Part("myfile\"; filename=\"image.png\" ") RequestBody file, @Part("description") RequestBody description);
建议多用搜索引擎答案来自stackoverflowretrofit 上传multipart文件包括其他参数
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我用的 retrofit 版本是 2.1.0。
这个应该是上传图片的情况吧,参数像description,具体看后台需要什么字段添加,不过很奇怪为什么要上传文件又要上传路径,直接上传路径不行?如果是七牛的话,直接上传后拿到地址再提交,还可以加后缀获取缩略图,大概是这样,应该没错,仅供参考
建议多用搜索引擎
答案来自stackoverflow
retrofit 上传multipart文件包括其他参数