expressjsfile upload,检查是否确实有文件发送,指定max filesize并保留其名称

到目前为止,大约一个月的时间和expressjs一起工作,我偶然发现了file upload的问题。 尽pipe咨询谷歌和各种博客,我没有find以下三个问题的答案:

我必须做什么/ bodyParser的设置,我必须select,以便:

  1. 确保确实上传了一个文件(目前,在没有select文件的情况下提交表单时会创build一个空文件)。

  2. 我可以在哪里指定文件允许的最大大小值?

  3. 我怎样才能省略文件的重命名?

目前我在我的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?'); } }); 

关于你的关心

确保确实上传了一个文件(目前,在没有select文件的情况下提交表单时会创build一个空文件)。

经过漫长的search,我find了一个很好的解

首先你需要安装node-strongidable

然后在包含库之后,检查文件是否上传到第一位

 var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { if (Object.keys(files).length !== 0) { console.log("File is exist") } else { console.log("File is not exist") } }); 

而关于大小,你可以检查这个。

 form.maxFieldsSize = 2 * 1024 * 1024; 

最好的祝福。

Abdulaziz Noor