微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pure Node.js文件上载(多部分POST)而不使用框架

第三方库“node-formidable”和“express”具有处理多部分POST请求的能力(例如,使用文件上载表单),但我不想使用任何第三方代码.如何在Node.js上使用纯 JavaScript进行文件上载过程?

在这方面资源很少.如何才能做到这一点?谢谢,爱是.

解决方法

只是为了澄清,因为似乎有些人生气,另一个答案没有多大帮助:没有简单的方法可以做到这一点,而不依赖于图书馆为你做这件事.

首先,这里是另一个问题的答案,试图澄清POST文件上传时会发生什么:https://stackoverflow.com/a/8660740/2071242

总而言之,要解析这样的上传,您首先需要检查包含“multipart / form-data”的Content-Type标头,如果存在,则读取标头内的boundary属性.

在此之后,内容分为多个部分,每个部分以边界字符串开头,包括一些额外的标题,然后是空白行后的数据本身.只要上传的数据中不存在这样的字节序列,浏览器就可以非常自由地选择边界字符串(详见http://tools.ietf.org/html/rfc1867的规范).您可以通过为请求对象的数据事件注册回调函数来读入数据:request.on(‘data’,callback);

例如,对于边界“QweRTy”,上传可能如下所示:

POST /upload HTTP/1.1
(some standard HTTP headers)
Content-Type: multipart/form-data; boundary=QweRTy

--QweRTy
Content-disposition: form-data; name="upload"; filename="my_file.txt"
Content-Type: text/plain

(The contents of the file)
--QweRTy--

请注意在初始标题之后如何将两个破折号添加到每个边界字符串的开头,并将两个破折号添加到最后一个的末尾.

现在,令人困难的是你可能需要在几个块中读取传入的数据(在上面提到的回调函数中),并且不能保证边界将包含在一个块中.因此,您需要缓冲所有数据(不一定是个好主意)或实现逐字节遍历数据的状态机解析器.这实际上正是070​​02.

因此,经过类似的考虑,我个人决定要使用的是库.重新实现这样的解析器非常容易出错,在我看来不值得努力.但是如果你真的想避免使用任何库,那么检查强大的代码可能是一个好的开始.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐