我有一个作为路由器的Node.JS服务器,可以通过向其发出POST请求来上传文件,只允许上传jpg/png/jpeg格式的文件。目前我的做法是:
var form = new formidable.IncomingForm(),
files = [],
postToFolder,
source,
size = 0,
dest;
postToFolder = '/path/';
form.on('file', function (field, file) {
var fileType = file.type.split('/').pop();
if (fileType == 'jpg' || fileType == 'png' || fileType == 'jpeg') {
// alot of stuff
}
else{
console.log('invalid filetype');
fs.unlinkSync(file.path);
console.log('Deleted: ' + file.path);
}
这段代码可以运行,但它把文件上传到 /tmp/ 文件夹,如果文件无效还必须删除它们。如果我能在文件完全上传之前检查文件扩展名,那么性能将更好。有人知道该怎么做吗?我已经尝试了谷歌搜索,没有结果,并且遇到了一些与 Formidable 不适用的答案。
编辑:我发现这会在开始之前触发,但它确实开始写入文件,取消或在期间中断服务器会导致我的整个文件磁盘多次写满,文档非常糟糕,所以我找不到任何可以让我“跳过”文件的内容。
form.on('fileBegin', function(field, file) {
var fileType = file.type.split('/').pop();
if (fileType == 'jpg' || fileType == 'png' || fileType == 'jpeg') {
}
else{
}
});
(part.filename && part.filename.match(...))
否则,它将无法工作(因为您允许处理未命名的文件)。 - Leonid Dashko