expressjs文件上传,检查是否有确实发送的文件,指定文件大小最多保持与它的名字(express

2019-07-30 18:34发布

现在有expressjs工作约一个月我已经跨文件上传的问题绊倒了。 尽管谷歌的咨询和各种博客我都未能找到一个答案,以下三个问题:

我有什么做的/为bodyParser什么设置,我必须以供选择:

  1. 确保确实有上传的文件(目前,提交表单时没有选择一个空文件被创建的文件)。

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

  3. 我怎么可以忽略该文件的重命名?

目前,我包括我的快递bodyParser(V 3.0.0)具有下列选项的应用程序:

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

Answer 1:

我最近遇到了类似的问题。 对于问题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?');
    }
});


Answer 2:

关于您的关注

确保确实有上传的文件(目前,提交表单时没有选择一个空文件被创建的文件)。

漫长的探索后,我找到了一个很好的解决方案

首先,你需要安装节点厉害

然后包括图书馆后,要检查的文件摆在首位上传

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;

最好的祝福。

努尔阿卜杜勒阿齐兹



文章来源: expressjs file upload, check whether there was indeed a file sent, specify max filesize & keep its name