项目中需要对前台(我们的项目只是单纯的restful api,所以一些限制得做好)上传过来的文件进行校验,主要是大小和类型(扩展名),目前的做法是将文件通过 multiparty 解析form中的文件信息。我现在已经将原来的实现改成监测传入的part(multipart相关概念,大概类似于multipart/form-data 中的某一块),解析它包含的文件信息。
但是还是有一些优化的想法,比如,如果能够在文件流传入结束之前检测到文件的类型和大小的话,那我就可以尽早的拒绝上传。但是,首先我不知道这个想法是否技术上可行(http是否支持),另外,由于对curl post数据时显示的东西不熟悉,短时间内也无法通过curl来分析上传的过程。
所以想请教一下,上面这两个问题。
这个想法技术上是否可行?
有什么方便的工具可以分析文件上传过程中,http报文的发送过程(如果文件元数据先独立发送,那么就有提前解析的可能了)。
这个不仅仅是个node相关的问题,只是因为实在做node项目的时候遇到的,所以才有这么一问。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
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