【问题标题】:How can I receive a file sent with FormData on the server (Express.js)?如何在服务器 (Express.js) 上接收使用 FormData 发送的文件?
【发布时间】:2021-07-14 01:18:22
【问题描述】:

我将图像文件附加到新的表单数据中。然后我需要在后端抓取文件,以便将其上传到 S3(必须在服务器端上传)。问题是我无法访问后端的文件。我尝试了多个中间件,例如 Formidable、express-fileupload 等,但它们都需要我有一个输入字段名称才能访问上传的文件。由于这不是 HTML 表单,我没有输入字段(或者不知道在哪里查找),所以我无法解析请求并获取上传的文件。

这是我的代码(选项是用户选择要上传的文件)。我也尝试过 POST,但无济于事,我现在使用 GET 传递一些我稍后需要的参数:

    function onUploadFiles(survey, options) {

    var formData = new FormData();


    var file = options.files[0];
    formData.append(file.name, file);
    
}

    var xhr = new XMLHttpRequest();
    xhr.open(
      "GET",
      `/logmood?file-name=${file.name}&file-type=${file.type}`,
    ); // https://surveyjs.io/api/MySurveys/uploadFiles
    xhr.onload = function() {
        var response = JSON.parse(xhr.responseText);

    };
    xhr.send(formData);

因此,在服务器端,我需要附加文件,然后继续执行此操作,在我的情况下上传到 S3,但我无法实现。图书馆提供这样的解决方案,但是,我没有输入字段:

您正在上传一个名为 car.jpg 的文件。 您输入的名称字段是 foo:<input name="foo" type="file" />。 在您的快速服务器请求中,您可以从 req.files.foo 访问您上传的文件:

app.post('/upload', function(req, res) {
  console.log(req.files.foo); // the uploaded file object
});

【问题讨论】:

    标签: node.js reactjs express xmlhttprequest


    【解决方案1】:

    你需要使用multer库来上传express js中的文件 https://github.com/expressjs/multer

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 2014-02-15
      • 1970-01-01
      • 2010-12-19
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2023-04-03
      相关资源
      最近更新 更多