使用formData通过ajax发布请求将数据(图像)保存在NodeJS服务器中

时间:2019-06-28 18:55:38

标签: javascript backbone.js multipartform-data multer insomnia

在搜索了此错误之后,未能找到我决定询问的答案。

wrapData: function() {
    var fd = new FormData(),
        image;
    _.each(this.models, function(model, i) {
        console.log(model.toJSON());
        if (model.get('cover')) {
            fd.append("portada", model.get('file'));
        }
        image = model.get('file');
        fd.append("images", image, image.name);
    });
    return fd;
},
sync: function(method, model, options) {
    var opts = {
        url: this.url(),
        success: function(response) {
            if (options.success || false) {
                options.success(data);
            }
            console.log(response);
            return response;
        }
    };
    switch (method) {
        case "create":
            opts.type = "POST";
            opts.data = this.wrapData();
            opts.processData = false;
            opts.contentType = false;
            break;
        default:
            opts.type = "GET";
    }
    return $.ajax(opts);
},

下面的代码尝试使用骨干js将多个图像上传到服务器。因此,当用户不选择一张图像作为封面时,请求获得成功(保存数据并返回响应),但是当用户选择一张图像时,请求获得失败

if (model.get('cover')) {
   fd.append("portada", model.get('file'));
}

,然后NodeJS打印:

name: 'MulterError',
message: 'Unexpected field',
code: 'LIMIT_UNEXPECTED_FILE',
field: 'portada'

但是令人困惑的是,当我尝试从Insomnia(REST客户端)执行相同操作时,请求获得了成功。

Here is the request from Insomnia and it response

我知道,multer会引发此错误,因为名称为“ portada”而不是名称为“ images”。但是我不明白为什么它可以在失眠症中起作用,但是从前端来看却没有。我正在一起尝试做同样的事情。

感谢您的帮助。

0 个答案:

没有答案
相关问题