2016-03-21 2 views
0

Я использую multer в моем приложении node.js, хотя я пытаюсь понять, как мне нужно найти, где multer поместил файл в мою функцию post, чтобы я мог выполнять пост-обработку на нем. Каков правильный путь? В настоящее время у меня есть это:файлы для мультера и пост-обработки?

var express = require('express') 
var app = express() 
var multer = require('multer') 
var upload = multer() 


var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
    callback(null, './public/uploads/'); 
    }, 
    filename: function (req, file, callback) { 
    callback(null, file.fieldname + '-' + Date.now()); 
    } 
}); 

var cpUpload = upload.fields([{ name: 'myfile', maxCount: 1 }]); 

app.post('/profile', cpUpload, function (req, res, next) { 
    var destination, filename; 
    storage.getDestination(req, req.files.myfile[0], function(param1, dest) { destination = dest; }) 
    storage.getFilename(req, req.files.myfile[0], function(param1, fn) { filename = fn; }) 
    var path = destination + '/' + filename; 
}) 

Я посмотрел в req.files.myfile[0] записи, чтобы увидеть, если был предоставлен путь назначения, но это, кажется, не так:

{ fieldname: 'myfile', 
    originalname: 'mytextfile.txt', 
    encoding: '7bit', 
    mimetype: 'text/plain' } 

Я хочу быть уверен, что любой подход, который я использовал, совместим с ожиданиями API.

+0

является 'req.files.myfile' фактически установлен в массив или это не определено? Если он установлен, что содержит 'req.files.myfile'? – mscdex

+0

Обновлен вопрос, чтобы отразить то, что я вижу –

+0

Это странно, теперь я вижу имя файла, путь и назначение как часть результата. Помимо создания новой установки npm, я не уверен, что еще я мог бы изменить здесь? –

ответ

0

Использование функций multer без указания имени поля не приводит к тому, что файлы не сохраняются (в этом случае сохраняются только нефайловые поля). Если вы хотите принять поля файла, вам необходимо передать строковое имя этого поля.

+0

При создании упрощенного примера моей проблемы я упростил его. Обновите вопрос. –