node.js - node 如何在文件数据上传完毕之前,获取文件的元数据
怪我咯
怪我咯 2017-04-17 13:05:22
[Node.js讨论组]

项目中需要对前台(我们的项目只是单纯的restful api,所以一些限制得做好)上传过来的文件进行校验,主要是大小和类型(扩展名),目前的做法是将文件通过 multiparty 解析form中的文件信息。我现在已经将原来的实现改成监测传入的part(multipart相关概念,大概类似于multipart/form-data 中的某一块),解析它包含的文件信息。
但是还是有一些优化的想法,比如,如果能够在文件流传入结束之前检测到文件的类型和大小的话,那我就可以尽早的拒绝上传。但是,首先我不知道这个想法是否技术上可行(http是否支持),另外,由于对curl post数据时显示的东西不熟悉,短时间内也无法通过curl来分析上传的过程。

所以想请教一下,上面这两个问题。

  1. 这个想法技术上是否可行?

  2. 有什么方便的工具可以分析文件上传过程中,http报文的发送过程(如果文件元数据先独立发送,那么就有提前解析的可能了)。

这个不仅仅是个node相关的问题,只是因为实在做node项目的时候遇到的,所以才有这么一问。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
ringa_lee

http协议是在tcp上面运行的,所以,整个formdata部分的数据,总是顺序上传到服务器的。

你在后端app拿到formdata数据的时候,差不多整个form已经上传完成了。

除非你自己解析formdata整个io流,包括http头信息以及formdata的body部分。

平时没有使用nodejs,所以不知道有没有这样的模块,但是知道有其他的类似功能模块。
有一个nginx_upload_module。
还有一个是lua_resty_upload也是运行在nginx内部的lua脚本。
还有一个tornado-stream-upload,你可以看看。

这几个都是把整个http body部分当成文件流,来解析处理的。
这样就能在formdata的前面部分拿到文件meta信息。
甚至你还能把meta信息放在http头信息里面。自定义头信息。

大家讲道理

1.这个想法可行,解决思路是在前端获取文件大小,在发送给服务端校验或者直接在前端校验
2.可以参考jquery Upload这个类库的demo 其中有node service的服务端demo

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号