如何使用Express 4和Multer保存文件?
我试图从FormData xhr请求保存传入的文件,但我甚至不能parsing传入的请求。 这是我如何发送文件:
... 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' } });
图像出现在服务器上,但不写入目录上传。
如何将图像保存在目录上传中?
我发现错误。 以下是更正的代码行:
formData.append( 'Choose your Fieldname', this.files[i], this.files[i].name);
我只需要把第一个参数是表示字段名的string。
查看后端的结果:
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); } ...