在使用expressjs大约一个月后,我偶然发现了文件上传的问题。尽管咨询了谷歌&各种博客我都没能找到以下三个问题的答案:
我必须做什么/我必须为bodyParser选择什么设置才能:
-
确保确实上传了一个文件(目前,当提交表单而没有选择文件时,会创建一个空文件)。
-
在哪里可以指定文件允许的最大大小值?
-
如何省略文件的重命名?
目前,我在我的express(v.3.0.0)应用程序中包括bodyParser,并提供以下选项:
{keepExtensions: true, uploadDir: __dirname + '/public/uploads'}
我最近遇到了一个类似的问题。对于问题2,请检查http://www.senchalabs.org/connect/middleware-limit.html
app.use(express.limit('4M')); // in your app.configure()
app.post('/upload', function(req, res) {
var fs = require('fs'),
file = req.files.myfile; //your file field;
if(file.size === 0) { // question #1
fs.unlinkSync(file.path);
res.redirect('/error?');
} else { //question #3
var fn = file.path.split('/');
fs.rename(file.path, file.path.replace(fn[fn.length-1], file.name));
res.redirect('/success?');
}
});
关于您的问题
确保确实上传了文件(当前,提交时在没有选择文件的情况下创建空文件的表单)。
经过长时间的搜索,我发现了一个伟大的解决方案
首先需要安装节点强大的
然后在包括库之后,检查文件是否上传在的第一位
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
if (Object.keys(files).length !== 0) {
console.log("File exists")
} else {
console.log("File does not exist")
}
});
你可以检查一下这个尺寸。
form.maxFieldsSize = 2 * 1024 * 1024;
致以最良好的问候。
阿卜杜勒阿齐兹·努尔