6

使用 expressjs 大约一个月了,我偶然发现了文件上传的问题。尽管咨询了 Google 和各种博客,但我未能找到以下三个问题的答案:

我必须做什么/我必须选择 bodyParser 的哪些设置才能:

  1. 确保确实上传了一个文件(目前,在不选择文件的情况下提交表单时,会创建一个空文件)。

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

  3. 如何省略文件的重命名?

目前,我在我的 express (v. 3.0.0) 应用程序中包含 bodyParser 并具有以下选项:

{keepExtensions: true, uploadDir: __dirname + '/public/uploads'}
4

2 回答 2

4

我最近遇到了类似的问题。对于问题 #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?');
    }
});
于 2012-08-04T00:24:39.147 回答
2

关于您的关注

确保确实上传了一个文件(目前,在不选择文件的情况下提交表单时,会创建一个空文件)。

经过长时间的搜索,我找到了一个很好的解决方案

首先你需要安装 node-formidable

然后在包含库之后,首先检查文件是否上传

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;

最好的祝福。

阿卜杜勒阿齐兹努尔

于 2017-01-19T09:24:36.417 回答