node formidable从表单字段重命名目录路径

时间:2017-08-01 03:16:18

标签: node.js formidable

我需要在包含文件和字段(多部分表单类型)的强大表单上传中根据表单字段值设置文件上载路径。

theForm.on('fileBegin',function(name,file){...} 之前被称为 theForm.parse(req,function(err,fields,files){...}

但是,似乎必须在解析表单字段之前设置表单上载路径。所以我还没有看到在字段中访问属性的方法。除了原型之外,还没有什么。我也查看了req.body,但值也不存在。

这是对的吗?有没有办法在表单字段可用之后但在文件保存到磁盘之前更改表单上载路径?

我正在使用截至今天,2017年7月31日的所有内容。

我还使用了正文解析器来读取JSON ..这会导致这个问题吗? (我已经读过它并且也不能使用它 - 删除它会给我带来其他问题,所以到目前为止我已将它留下了..) const bodyParser = require('body-parser'); const jsonParser = bodyParser.json();

非常感谢!

1 个答案:

答案 0 :(得分:0)

我建议使用express-fileupload模块:

var express = require('express');
var app = express();
var path = require('path');

const fileUpload = require('express-fileupload');
app.use(fileUpload());

var defaultDir = "C:\\temp";
app.post('/upload', function(req, res){

    // The name of the input field (i.e. "clientfile") is used to retrieve the uploaded file 
    let sampleFile = req.files.clientfile;

    var savefile_path = path.join(defaultDir, req.body.path, sampleFile.name);

    // Use the mv() method to place the file somewhere on your server 
    sampleFile.mv(savefile_path, function(err) {
        if (err)
        {
            return res.status(500).send(err);
        }
    });
    res.status(200).send("File uploaded");
    console.log("File uploaded");
});