【问题标题】:simple multipart file upload with express.js and multer with ajax使用 express.js 进行简单的多部分文件上传,使用 ajax 进行 multer
【发布时间】:2017-12-21 05:50:10
【问题描述】:

我没有收到任何错误。文件夹uploadschmod 777

后端:

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

var upload = multer({   storage: storage,
                        limits: { fileSize: '50mb' }}).single('photo');


router.post('/bild',function(req,res){
    console.log("REQ",req); //file is there in the body
    upload(req,res,function(err) {
        if(err) {
            return res.end("Error uploading file.");
        }
        res.end("File is uploaded");
    });
});

前端:

$("#formular").submit(function (e) {
        e.preventDefault();
        var form = $(this)[0];
        var formData = new FormData(form);
        console.log(formData)
        $.ajax({
            type: "POST",
            url: "/users/bild",
            data: formData,
            processData: false,
            "content-type": "application/x-www-form-urlencoded",
            success: function(r){
                console.log("result",r)
            },
            error: function (e) {
                console.log("some error", e);
            }
        });

    });

但没有上传任何文件。我还尝试在发送之前获取文件并将其附加到 formData - 效果相同。

【问题讨论】:

    标签: javascript jquery ajax express multer


    【解决方案1】:

    对于前端,contentType 必须设置为 false 才能使用 jQuery.ajax 中的 formdata 对象,同样$(this)[0] === this

    $("#formular").submit(function (e) {
        e.preventDefault();
        var formData = new FormData(this);
        console.log(formData)
        $.ajax({
            type: "POST",
            url: "/users/bild",
            data: formData,
            processData: false,
            contentType: false,
            success: function(r){
                console.log("result",r)
            },
            error: function (e) {
                console.log("some error", e);
            }
        });
    
    });
    

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 2018-02-27
      • 2019-01-19
      • 2012-08-19
      • 2017-07-29
      • 2017-08-21
      • 2011-02-07
      • 1970-01-01
      • 2014-06-24
      相关资源
      最近更新 更多