【发布时间】:2011-06-12 12:56:46
【问题描述】:
我使用 express/formidable 在 node.js 中创建了一个上传脚本。它基本上可以工作,但我想知道何时何地检查上传的文件 e. G。对于最大文件大小或文件的 mimetype 是否实际允许。
我的程序如下所示:
app.post('/', function(req, res, next) {
req.form.on('progress', function(bytesReceived, bytesExpected) {
// ... do stuff
});
req.form.complete(function(err, fields, files) {
console.log('\nuploaded %s to %s', files.image.filename, files.image.path);
// ... do stuff
});
});
在我看来,检查 mimetype/文件大小的唯一可行的地方是 complete 事件,我可以可靠地使用文件系统函数来获取 /tmp/ 中上传文件的大小 - 但这似乎一个不太好的主意,因为:
- 可能是恶意的/太大的文件已经上传到我的服务器上
- 用户体验很差 - 您观看上传进度只是被告知它之后没有工作
实现这一点的最佳做法是什么?我在 node.js 中找到了很多文件上传示例,但似乎没有一个进行我需要的安全检查。
【问题讨论】:
标签: file-upload node.js