【问题标题】:How to save file using Express 4 and Multer?如何使用 Express 4 和 Multer 保存文件?
【发布时间】:2017-02-05 05:54:31
【问题描述】:

我正在尝试保存来自 FormData xhr 请求的传入文件,但我什至无法解析传入请求。这就是我尝试发送文件的方式:

...
    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' }
});

图像在服务器上,但没有写入目录上传。

如何将图片保存在上传目录中?

【问题讨论】:

    标签: javascript node.js express xmlhttprequest multer


    【解决方案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);
        }
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 2021-08-11
      • 2015-10-11
      • 2017-03-06
      • 1970-01-01
      • 2021-11-07
      • 2017-03-01
      相关资源
      最近更新 更多