Чтение загруженных файлов (с использованием промежуточного программного обеспечения Multer) - PullRequest
0 голосов
/ 02 октября 2019

Я создал приложение drag-n-drop electron и использую multer с node для загрузки файлов на сервер express, на котором я работаю.

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

Мой вопрос: откуда мне знатькогда файлы были успешно загружены в хранилище файлов ? В приведенном ниже коде в initiateReadLogs() я пытаюсь прочитать файлы по одной строке за раз, используя fs.createReadStream(eventstream.split()). Однако, что происходит, когда я читаю файлы, кажется, что они все еще не закончили сохранение на диск (я проверил, используя fs.watch() и fs.stats.size, что размер все еще увеличивается), а затем я загружаю дубликаты файлов.

Так настроена конечная точка, довольно стандартная:

// multer storage configuration
var storage = multer.diskStorage({
    destination:function(req,file,cb){
        cb(null,LOG_LOCATION)
    },
    filename: function(req,file,cb){
        cb(null,Date.now() + file.originalname);
    }
});
var upload = multer({ storage:storage });


app.post('/uploadLogs', upload.any(), (req, res, next) => {

    const files = req.files;
    if (!files) {
      const error = new Error('Please choose files')
      error.httpStatusCode = 400
      return next(error)
    }

    // Here I open a `ReadStream` to read each file
    task.initiateReadLogs(files, LOG_LOCATION);

    res.send(files);
})
...