一尘不染

在Node.js中使用POST请求上传文件

node.js

我在Node.js中使用POST请求上传文件时遇到问题。我必须使用request模块来完成该操作(无需外部npms)。服务器需要它是file包含文件数据字段的多部分请求。看起来很容易,但不使用任何外部模块就很难在Node.js中完成。

我尝试使用此示例,但未成功:

request.post({
  uri: url,
  method: 'POST',
  multipart: [{
    body: '<FILE_DATA>'
  }]
}, function (err, resp, body) {
  if (err) {
    console.log('Error!');
  } else {
    console.log('URL: ' + body);
  }
});

阅读 410

收藏
2020-07-07

共1个答案

一尘不染

看起来您已经在使用requestmodule了

在这种情况下,您需要发布的multipart/form- data只是使用其form功能

var req = request.post(url, function (err, resp, body) {
  if (err) {
    console.log('Error!');
  } else {
    console.log('URL: ' + body);
  }
});
var form = req.form();
form.append('file', '<FILE_DATA>', {
  filename: 'myfile.txt',
  contentType: 'text/plain'
});

但是,如果您想从文件系统中发布一些现有文件,则可以简单地将其作为可读流传递:

form.append('file', fs.createReadStream(filepath));

request 将自行提取所有相关的元数据。

有关发布的更多信息,multipart/form-data请参见node-form- data模块内部使用request

2020-07-07