我在Node.js中使用POST请求上传文件时遇到问题。我必须使用request模块来完成该操作(无需外部npms)。服务器需要它是file包含文件数据字段的多部分请求。看起来很容易,但不使用任何外部模块就很难在Node.js中完成。
request
file
我尝试使用此示例,但未成功:
request.post({ uri: url, method: 'POST', multipart: [{ body: '<FILE_DATA>' }] }, function (err, resp, body) { if (err) { console.log('Error!'); } else { console.log('URL: ' + body); } });
看起来您已经在使用requestmodule了。
在这种情况下,您需要发布的multipart/form- data只是使用其form功能:
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。
multipart/form-data
node-form- data