简介
上传文件到服务器是一个比较常用的操作,最基本的方式是通过POST上传,文件以二进制形式,作为一个参数传递,但是这个POST的结构相当复杂,且必须完全符合HTTP标准。
文件上传的POST格式
该POST主要由下面几个部分构成。
请求头
1.Content-Length(请求体的二进制大小)- 注意这里的二进制大小应该根据请求体计算
2.Content-Type multipart/form-data; boundary=(分隔符)
- 注意这里的分隔符与请求体的分隔符有关,但不完全一致。
请求体
基本格式示例- 这里的分隔符就是上面的分隔符,但是前面要多加两个
'-'
。
--分隔符 Content-Disposition: form-data; name="uploadFile"; filename="button.png" Content-Type: image/png (此处空两行) <二进制内容> --分隔符 Content-Disposition: form-data; name="submit" (此处空两行) Submit --分隔符-- (此处空一行)
- 注意到最后的分隔符后面跟了
--
,这个代表结束符,并且后面要跟一个空行。
格式说明
普通参数
普通参数的构成如下:Content-Disposition: form-data; name="参数名" (此处空两行) 参数值 --分隔符
多个参数可以连续拼接。
文件参数
文件参数与普通参数类似,只是多了一行MineType的说明,该说明告诉服务器文件的类型。Content-Disposition: form-data; name="uploadFile"; filename="button.png" Content-Type: image/png (此处空两行) <二进制内容>
- 这里的分隔符就是上面的分隔符,但是前面要多加两个