在用nodejs + expressjs + multer做服务端上传处理的时候,控制台一直报错
谷歌之后发现Boundary
这个东西大概用途是在上传体中用来分割每个值的一个分隔符,如:
的红框中的内容,上图上传正确的样子。
为什么会缺少这一部分呢????
问题出在了我前端是使用jquery直接使用ajax来发送formData作为上传的手段,但是jquery的ajax做了很多兼容性的包装,其中影响了请求的有contentType
和processData
这两个属性:
- contentType:默认使用
application/x-www-form-urlencoded; charset=UTF-8
格式来发送消息体,但是上传的时候需要使用multipart/form-data
类型,但是我们不能把它写死为multipart/form-data
,因为这样就会出现上述的找不到Boundary的错误,正确的做法是把这个设置为false。 - processData:这个属性的作用是默认把我们的消息体转换成默认的
x-www-form-urlencoded
格式,但是前面已经说明了我们上传的时候是不会使用这种格式的,所以把这个属性设置为false。
参考链接 SIMPLE FILE UPLOADS USING JQUERY & AJAX
版权声明:原创文章,如需转载,请注明出处“本文首发于xlaoyu.info”