【问题标题】:post $http request using file type input and get req.body and req.file not using multer nodejs使用文件类型输入发布 $http 请求并获取 req.body 和 req.file 不使用 multer nodejs
【发布时间】:2019-05-21 15:51:27
【问题描述】:

我尝试过的代码是:

//jade
 input(type='file', ng-model='filename',file-model='Image', required='')

 // controller.js
 $scope.reupload = () => {
      $scope.user = {
        UserName: 'sam',
        FirstName: 'sameer',
      };
      const fd = new FormData();
      $scope.theData = {};
      fd.append('file', $scope.Image);
      $scope.theData.i = fd;
      $http({
        method: 'POST',
        url: '/api/uploadresume',
        data: $scope.theData,
      })
        .then((data) => {
          console.log(data);
        }).catch((err) => {
          console.log(`error ${err}`);
        });
    };

//server.js
app.post('/api/uploadresume', api.UploadAlumniResume);

//api.js
exports.UploadAlumniResume = (req, res) => {
  console.log('req.body', req.body);
  console.log('req.file', req.file);
};

我正在获取文件数据 inito $scope.Image,

我使用 const fd = new FormData() 追加数据。

fd 作为附加 $scope.Image.

然后将 $scope.theData 数据存储到 post 请求中。

我得到的结果是:

// req.body $ req.file 控制台

 req.body { i: {} }

 req.file undefined

我需要访问 req.body 数据并读写 req.file 数据。

请给我任何解决方案!

【问题讨论】:

    标签: javascript node.js json file http


    【解决方案1】:

    您不能将FormData 放在您发布的对象中。它必须是数据本身。

      const fd = new FormData();
      fd.append('file', $scope.Image);
      $http({
        method: 'POST',
        url: '/api/uploadresume',
        data: fd,
        processData: false
      })
    

    【讨论】:

    • 我收到此错误“SyntaxError: Unexpected token # in JSON at position 0”
    • 您不能将 FormData 放在 JSON 中。我不确定您对req.body 的期望。您没有上传文件以外的任何内容。
    • 我需要在这个api上写入文件路径,所以我需要文件数据。
    • fd.append('file', $scope.Image) 就是这样做的。
    • 首先我使用将发布请求数据定义为 $scope 图像。文章使用 new FormData() 使用文件数据发送包含新 FormData() 的 fd
    【解决方案2】:

    图片或文件上传时,需要传递header'Content-Type': 'multipart/form-data'

    如果你使用bodyparser,那么body parser无法处理form-data,它只能处理application/x-www-form-urlencodedapplication/json数据

    当你得到req.file undefined 这是因为bodyparser 不适用于表单数据

    所以使用multer 来处理form-data

    【讨论】:

    • 我需要在这个 api 上写入文件路径,所以我需要文件数据。所以我只想要 api 中的文件数据
    猜你喜欢
    • 2021-06-02
    • 2022-12-03
    • 2019-12-05
    • 2020-10-02
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多