грозный узел переименовать путь к каталогу из полей формы

Мне нужно установить путь загрузки файла на основе значений полей формы в огромной загрузке формы, которая имеет как файл, так и поля (многостраничный тип формы).

theForm.on ('fileBegin', функция (имя, файл) {...} вызывается перед theForm.parse (req, function (err, fields, files) {...}

Однако кажется, что путь загрузки формы должен быть установлен до того, как поля формы будут проанализированы. Поэтому я пока не вижу способа получить доступ к свойствам в полях. Пока ничего нет, кроме прототипа. Я также смотрел в req.body, но значений там тоже нет.

Это правильно? Есть ли способ изменить путь загрузки формы после того, как поля формы станут доступны, но до того, как файл будет сохранен на диск?

Я использую самую последнюю на сегодня, 31.07.2017.

У меня также используется body-parser для чтения в JSON. Может ли это быть причиной этой проблемы? (Я читал, что это нормально, а также НЕЛЬЗЯ использовать его - его удаление вызывает у меня другие проблемы, поэтому я пока оставил это ...) const bodyParser = require ('body-parser'); const jsonParser = bodyParser.json ();

Большое спасибо!


person Dustin Butler    schedule 01.08.2017    source источник


Ответы (1)


Я бы посоветовал использовать модуль 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");
});
person Jay Thaker    schedule 17.08.2017