2016-09-27 6 views
1

Я пытаюсь сохранить входящий файл из запроса FormData xhr, но я даже не могу разобрать входящий запрос. Это, как я пытаюсь отправить файл:Как сохранить файл с помощью Express 4 и Multer?

... 
    let xhr = new XMLHttpRequest(), 
    formData = new FormData(); 

    for(let i = 0; i < this.files.length; i++) { 
     formData.append(this.files[i], this.files[i].name); 
    } 
    xhr.open('POST', URL, true); 
    xhr.send(formData); 
... 

И это, как я пытаюсь поймать его:

var express = require('express'); 
var router = express.Router(); 
var multer = require('multer'); 
var uploads = multer({dest: './uploads/'}); 

router.post('/upload', uploads.any(), function (req, res) { 
    console.log(req.files); // [] 
    console.log(req.file); // undefined 
    console.log(req.body); //{ '[object File]': '20160715_104330.jpg' } 
}); 

Изображение поступает на сервер, но не писать в каталог добавления.

Как я могу сохранить изображение в каталоге, загружаемом?

ответ

1

Я нашел ошибку. Ниже приведена скорректированная строка кода:

formData.append('Choose your Fieldname', this.files[i], this.files[i].name); 

Мне просто нужно было поставить первый параметр - строку, представляющую имя поля.

Смотрите результат во внутреннем интерфейсе:

var express = require('express'); 
var router = express.Router(); 
var multer = require('multer'); 
var uploads = multer({dest: './uploads/'}); 

router.post('/upload', uploads.any(), function (req, res) { 
    console.log(req.files); 
    /* [ { fieldname: 'Choose your Fieldname', 
      originalname: '20160715_104330.jpg', 
      encoding: '7bit', 
      mimetype: 'image/jpeg', 
      destination: './uploads/', 
      filename: '72b7a52101537ab1006f4feb0fa752be', 
      path: 'uploads\\72b7a52101537ab1006f4feb0fa752be', 
      size: 233509 } ] 
    */ 
    console.log(req.file); // undefined 
    console.log(req.body); //{} 
}); 

Ниже меньше кода в веб-интерфейсе:

... 
    upload(){ 
     let xhr = new XMLHttpRequest(), 
     formData = new FormData(); 
     formData.append('Choose your Fieldname', this.files[0], this.files[0].name); 
     xhr.open('POST', URL, true); 
     xhr.send(formData); 
    } 
... 

 Смежные вопросы

  • Нет связанных вопросов^_^