使用Retrofit 2上传文件

重新启动47

我尝试这样做了几天,然后我真的做了所有事情。.这是Postman中请求的外观: 在此处输入图片说明

在此处输入图片说明

我敢肯定,所有GET参数都正确编写。我想在发送文件上载时出现了问题。

            Map<String, RequestBody> map = new HashMap<>();
            File file = new File("/storage/emulated/0/ConstructSecure/d1940b05-76d1-4d98-b4b4-b04b8247c8cb.png");
            RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), file);
            String fileName = file.getName();
            map.put("attachment\"; filename=\"" + fileName + "\"", requestBody);

            //GET parameters
            Map<String, String> params = new HashMap<String, String>();
            params.put("inspectionUUID", inspectionUUID);
            params.put("noteUUID", noteUUID);
            params.put("attachmentUUID", attachmentUUID);
            params.put("noteType", noteType);
            params.put("modifiedTime", modifiedTime);

            Call<ResponseBody> call = service.upload(access_token,params,map);
            call.enqueue()....

界面:

@Multipart
    @POST("api/MediaFiles/AddMediaFile")
    Call<ResponseBody> upload(
            @Header("Authorization") String authorization,
            /* GET params */ @QueryMap Map<String, String> params,
            @PartMap Map<String, RequestBody> map
    );

有人可以帮我吗?

重新启动47

我花了很多时间进行搜索,如何以字节流的形式发送文件,因为网络中的所有答案都说明了通过RequestBody进行上传,但是这种方法不适用于我的情况。所以,这是解决方案:

InputStream in = new FileInputStream(file);
    byte[] buf = new byte[in.available()];
    while (in.read(buf) != -1) ;
    RequestBody requestBodyByte = RequestBody
            .create(MediaType.parse("application/octet-stream"), buf);
    String content_disposition = "attachment; filename=\"" + fileName + "\"";

    //GET parameters
    Map<String, String> params = new HashMap<String, String>();
    params.put("inspectionUUID", inspectionUUID);
    params.put("noteUUID", noteUUID);
    params.put("attachmentUUID", attachmentUUID);
    params.put("noteType", noteType);
    params.put("modifiedTime", modifiedTime);

    Call<ResponseBody> call = service.upload(access_token, content_disposition, requestBodyByte, params);

界面:

 @POST("api/MediaFiles/AddMediaFile")
    Call<ResponseBody> upload(
            @Header("Authorization") String authorization,@Header("Content-Disposition") String content_disposition, @Body RequestBody photo,
            /* GET params */ @QueryMap Map<String, String> params
    );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony2使用添加/删除方法上传多个文件

来自分类Dev

使用Symfony2上传文件-比较文件名和上传的文件

来自分类Dev

使用Sonata-project在Symfony 2中上传文件

来自分类Dev

如何使用Struts2上传文件?

来自分类Dev

使用Retrofit 2.0上传文件

来自分类Dev

Retrofit v2.0.0-beta2如何使用RequestBody上传文件

来自分类Dev

使用Jersey 2上传文件

来自分类Dev

使用webapp2上传文件有大小限制吗?

来自分类Dev

Android:无法使用Retrofit 2.0.0 beta 2上传多部分图片文件

来自分类Dev

使用树枝和Slim框架(版本2)上传文件-PHP

来自分类Dev

使用翻新2上传文件时出错

来自分类Dev

在Retrofit 2中上传文件

来自分类Dev

Dropbox API v2使用python上传大型文件

来自分类Dev

在Android中使用Retrofit2库上传文件

来自分类Dev

如何使用angular 2上传文件?

来自分类Dev

使用带有Retrofit2两个多部分和JSON键值对上传文件

来自分类Dev

使用multer上传大文件(> 2GB)

来自分类Dev

使用自己的实体上传Symfony2文件

来自分类Dev

Spray:使用Specs2测试文件上传

来自分类Dev

使用QNetworkAccessManager通过SSH2协议上传文件

来自分类Dev

使用Retrofit2将文件上传到Slack

来自分类Dev

在Android中使用Retrofit2库上传文件

来自分类Dev

使用Retrofit2 / okhttp3上传文件,上传操作始终执行两次,一次快速,另一次缓慢

来自分类Dev

使用Angular2上传文件

来自分类Dev

如何使用yii2更新上传的文件

来自分类Dev

使用 Apache HttpClient 上传 2GB 文件

来自分类Dev

使用 Retrofit 2 上传大图像

来自分类Dev

Sweet Alert 2 jQuery 文件使用 php 上传

来自分类Dev

使用 observables Angular 2 上传文件,获取上传文件的 Url

Related 相关文章

热门标签

归档