retrofit2.0文件数组形式的上传

前言:最近遇到一个项目是多图文件用相同字段上传,因为网络通信这一块的知识储备比较贫乏,所以开一贴记录一下,顺便帮助一些小鲜肉共同进步

话不多说,上菜。。。。

image.png

这是通过postman模拟的请求参数,通过上图我们可以看出,上传文件真正需要的是下面这个:

请求头信息:Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
文件的唯一标志:Content-Disposition: form-data; name="uploadfiles"; filename="ludashi_baidu.exe"

那么问题来了,我们该怎么组装呢?

首先,我们可以看到请求头中的 Content-Typemultipart/form-data,所以我们在上传的时候
是需要Multipart这个注解的

image.png

看图就可以知道这个注解是需要和part一起使用的,而我们的参数是不定的,所以使用partMap(胡吹一通,我都信了。。。)
因此接口如下:

image.png

下面是使用方法:
image.png

这个是重点,手动拼接文件上传参数!!

hashMap.put("uploadfiles";filename="" + file.getName(), requestBodyFile);

注意:
uploadfiles是服务端要求的key值,服务端的参数应该是:multipartFile[] uploadfiles
上述就是我们手动的拼接出来一个file文件上传的参数,因为filename的不同,可以被上传到同一个请求file数组中,接下来是一张抓包的图片,上面可以清晰的看到请求的参数和参数类型

image.png

其实,这个可以说是一个万能的文件上传例子,适用于各种情况,当然你也可以把他抛开了,让他更适用于自己的项目。。。

我发现了另一种方法,但是这种方法,在我另一个项目中上传不上去,大家谨慎使用:

image.png

image.png

最后,如果有错误的地方,欢迎大佬指正 = =

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。