前言
最近在玩IOS,学习到文件上传的一些东西略有感悟,其实文件上传也是使用http协议,只是报文体部分的数据比较难拼,只要分析清楚了完全可以自己去实现文件上传组件。
1文件上传报文分析
首先我们分析一下上传文件的报文,当上传文件的时候发送过去的post请求中的报文体是这样的:
Content-Type:multipart/form-data;boundary=---------------------------7d33a816d302b6
Content-Length: 424
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="file"; filename="E:\s.jpg"
Content-Type: application/octet-stream
(二进制数据)
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="text1"
foo
-----------------------------7d33a816d302b6
Content-Disposition: form-data; name="password1"
bar
-----------------------------7d33a816d302b6--
通过下图我们可以对照出每一段是什么意思,这样我们心里就有数了,我们要上传文件就可以将报文拼接成相应的形式。
需要注意的是,换行符绝对不能少,不能随意增加字符,否则服务器会不认识,如果,拼接出来的报文发送到服务器后,
服务器没有反应,或者文件为空,那么一定是报文拼接错误。
通过下图我们可以对照出每一段是什么意思,这样我们心里就有数了,我们要上传文件就可以将报文拼接成相应的形式。
需要注意的是,换行符绝对不能少,不能随意增加字符,否则服务器会不认识,如果,拼接出来的报文发送到服务器后,
服务器没有反应,或者文件为空,那么一定是报文拼接错误。
附上一些常用的文件MIMEType: