Volley框架(四):使用Volley上传文件

在上一篇博客《Volley框架(三):使用Volley提交表单数据》中,我们已经知道了使用Volley提交表单数据,这篇博客我们来说一下使用Volley实现上传文件。

 

首先,我们还是一样,通过网络抓包看看上传文件的格式是什么,与提交表单数据有什么不同。

POST http://www.aaa.com/?ashx/login.ashx HTTP/1.1
Host: www.aaa.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------29518470621122
Content-Length: 6462

-----------------------------29518470621122
Content-Disposition: form-data; name="login_username"

abcde
-----------------------------29518470621122
Content-Disposition: form-data; name="login_pswd"

12345
-----------------------------29518470621122
Content-Disposition: form-data; name="upfile"; filename="error_img.jpg"
Content-Type: image/jpeg

?? JFIF      ? C 		

 $.' ",#(7),01444'9=82<.342? C			

2!!22222222222222222222222222222222222222222222222222?  
-----------------------------29518470621122--

如果看了上一篇博客的分析,那么在这里我们很容易就知道先是提交的2条文字数据,然后这里多了一段,和提交文字数据的格式类似,只有部分不同的数据;没错,这里多的这一段就是上传文件的格式,乱码部分就是文件的二进制数据(算做一行),然后最后有一个结束符,和提交表单数据一样。
下面我们分析一下提交文件的格式:

第一行:"--" + boundary + "\r\n"

说明:”–”为数据开始标志,boundary为http实体头定义的边界分割线,boundary可以是任意的字符串,只要和Content-Type: multipart/form-data; boundary=----29518470621122中保持一直即可,”\r\n”为回车换行; 

第二行:Content-Disposition: form-data; name="参数的名称"; filename="上传的文件名" + "\r\n"

说明:这里比普通的表单多了一个filename=”上传的文件名”; 

第三行:Content-Type: 文件的 mime 类型 + "\r\n"

说明:这一行是文件上传必须要的,而普通的文字提交可有可无,mime 类型需要根据文档查询;

第四行:\r\n

说明:只有换行符;

第五行:文件的二进制数据 + "\r\n"

说明:文件的二进制数据加上换行符。

 

 

结束标志:"--" + boundary + "--" + "\r\n" 

说明:在所有的数据结束之后,需要有这个结尾标志。 

文件也可以同时上传多个文件,上传多个文件的时候重复1、2、3、4、5步,在最后的一个文件的末尾加上统一的结束行。

 

通过上面对格式的分析,

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值