NGINX+Node.js 关于文件上传的一个奇怪问题

2015-01-26 16:20:53 +08:00
 lijia18
环境: nginx+node.js
操作: 本地写一个文件上传文件的表单静态页面,提交的地址是http://服务器ip/任意路径,加入任意文件进行提交。
结果: 服务器返回404错误(从log看是因为没有csrf,node返回了404)。但是node目录居然生成了一个cb109ce641a15a25a6e1399a2866649b.txt的文件(我上传的是txt文件),文件内容与上传的内容也一致。
我怀疑是nginx把文件接收后作为缓存存了起来,但是node返回404后没有删除。
请教一下各位大神,这个情况怎么破,是否可以指定不允许上传文件,或者只允许几个路径可以上传文件,或者在后端返回非200后可以自动删除文件。
跪求答案。
3208 次点击
所在节点    NGINX
2 条回复
withinthefog
2015-01-26 19:11:47 +08:00
看下你的nodejs用的什么bodyparser, express自带的bodyparser在处理multipart请求的时候总是会将请求中的文件写到tmp目录里,不管你处理不处理,参考这个文章 http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
如果是这个问题的话建议你换个bodyparser来处理multipart请求,禁用express的bodyparser.例如skipper: https://www.npmjs.com/package/skipper
lijia18
2015-01-27 10:48:48 +08:00
@withinthefog 恩,谢谢,我也分析出来大概是这个问题,只是没想到是bodyparser捣乱,换一下试试。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/165581

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX