在web应用中,文件上传和下载算是十分常见的功能。就以头像上传为例,像图片等非文本文件需要使用字节流来操作,也就是相当于将文件转化为二进制流操作。
这里再提一下Content-Type在表单中提交文件时,需要使用:multipart/form-data
Multipart/form-data的基础方法是POST , 也就是说是由POST方法来组合实现的.
Multipart/form-data与POST方法的不同之处在于请求头和请求体.
Multipart/form-data的请求头必须包含一个特殊的头信息 : Content-Type
, 且其值也必须规定为multipart/form-data
, 同时还需要规定一个内容分割符用于分割请求体中的多个POST的内容 , 如文件内容和文本内容自然需要分割开来 , 不然接收方就无法正常解析和还原这个文件了.
Multipart/form-data的请求体也是一个字符串 , 不过和post的请求体不同的是它的构造方式 , post是简单的name=value值连接 , 而Multipart/form-data则是添加了分隔符等内容的构造体.
交互代码
1)普通form表单
<form enctype="multipart/form-data" action="url" method="POST">
<!-- name的值与后端接收的参数必须一致 -->
<input type="file" name="file">
<input type="submit" value="提交">
</form&