Android volley 解析(三)之文件上传篇

本文深入探讨了如何使用Volley库进行文件上传,特别是图片上传。通过分析上传的数据格式,指出其与表单提交的区别,并提供了文件实体类的创建、Volley对文件数据的封装方法,以及文件上传接口和图片上传验证的实现。最后展示了上传成功的测试结果,并预告了Volley文件上传存在的问题及其解决方案以及后续将讲解的Volley缓存机制。
摘要由CSDN通过智能技术生成

前面我们讲了如何通过 volley 实现表单的提交,而这篇文章跟上一篇衔接很大,如果没有看上一篇 blog 的朋友,建议先去看看 Android Volley解析(二)之表单提交篇
因为文件上传实质就是表单的提交,只不过它提交的数据包含文件类型,接下来还是按照表单提交的套路来分析。

数据格式

这里我们通过图片上传的案例来分析,其他文件也是同样的实现方式;以下是我在传图网传图时,上传的数据格式,先来分析一下

POST http://chuantu.biz/upload.php HTTP/1.1
Host: chuantu.biz
Connection: keep-alive
Content-Length: 4459
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://chuantu.biz
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryS4nmHw9nb2Eeusll
Referer: http://chuantu.biz/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: __cfduid=d9215d649e6e648e0eac7688b406a3d911425089350

------WebKitFormBoundaryS4nmHw9nb2Eeusll
Content-Disposition: form-data; name="uploadimg"; filename="spark_bg.png"
Content-Type: image/png

JFIFC
    %# , #&')*)-0-(0%()(C
    ((((((((((((((((((((((((((((((((((((((((((((((((((("
    }!1AQa"q2#BR$3br
    %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
    w!1AQaq"2B  #3Rbr
    $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?PNG
------WebKitFormBoundaryS4nmHw9nb2Eeusll--

不难发现,这种格式跟表单提交的格式非常接近,不过还是有所差别,这里仔细看还是能看出来总共有加上结尾行,有五行,因为乱码部分,其实就是图片的二进制数,整个算一行;下面来分析下:
1、第一行:"--" + boundary + "\r\n" ;
前面也说了文件上传,其实就是表单提交,所以在提交数据的开始标志不变;
2、第二行:Content-Disposition: form-data; name="参数的名称"; filename="上传的文件名" + "\r\n"
这里比普通的表单多了一个filename=”上传的文件名”;
3、第三行:Content-Type: 文件的 mime 类型 + "\r\n"
这一行是文件上传必须要的,而普通的文字提交可有可无,mime 类型需要根据文档查询;
4、第四行:"\r\n"
5、第五行文件的二进制数据 + "\r\n"
这里跟普通表单提交一样;
结尾行:"--" + boundary + "--" + "\r\n"
可以看到,文件上传的诗句格式跟我们上一篇博文中讲到

  • 15
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值