HTTP POST上传文件的格式说明

前一阵,因为项目需要,将之前自己封装的黑莓10上的HTTP库添加了Post上传文件的接口,实现后一直也没有测试(因为之前实现过.Net上的,所以这次自信满满的觉得肯定不会有问题),今天实现在头像上传的功能时,居然一直出错,抓了半天包,修改了一上午也没找到原因,后来实在没辙时,想到了RFC文档,然后发现这次出问题又是一次自己粗心犯二导致的,所以发个博文记录一下以免以后好了伤疤又忘了疼。

关于boundary: 
RFC文档上描述,A boundary is selected that does not occur in any ofthedata.意思就是选择作为boundary的数据不会出现在要上传的数据里,这一点毫无疑问,如果作为分界数据的boundary,会出现在上传的数据里,那么boundary就没有意义了~其实RCF上没有规定 boundary的格式,但是大多数实现里boundary都采用了-----配合一个随机数据的方式。 
 
关于multipart/form-data上传方式: 
其实在封装HTTPPOST上传文件的方法时,只要实现这一种即可(单个文件也可以用这种方式上传),下面上RFC上的Sample: 
Content-Type: multipart/form-data, boundary=AaB03x

--AaB03x
Content-Disposition: form-data; name="field1"

Joe Blow
--AaB03x
Content-Disposition: form-data; name="pics";filename="file1.txt"
Content-Type: text/plain

  ... contents of file1.txt ...
--AaB03x--

文件分界这里要切记是-- +boundary(这次出的问题也是在这犯二了,居然没有在boundary前加这两个-),结束的标志是-- + boundary +--,在每一段信息描述后要跟一个\r\n再跟文件数据,文件数据后面也要跟一个\r\n,这里也是一个关键点,其他只要按照上面的Sample去实现就好了,如果Content-Type部分不想添加根据文件后缀名填充值的话,可以直接用application/octet-stream。 
 
Content-Type对照表: http://tool.oschina.net/commons
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值