我需要在Node.js中向一个API发出一个POST请求,它接受两个参数:1)"元数据",一个字符串,和2)"文件",一个多部分文件。
以下是服务器端java代码的一部分:
public ResponseEntity<CmisDocumentDTO> createDocument(
@ApiParam(name = "file", value = "File to be uploaded.", required = true) @RequestParam("file") MultipartFile file,
@ApiParam(name = "metadata", value = "Metadata of the document", required = false) @RequestParam("metadata") String metadata) {
//Calls the service
}
以下是我的node.js代码调用此请求。该文件位于我的本地计算机上并使用表单数据模块:
var FormData = require('form-data');
var form = new FormData();
form.append("metadata", "metadata_string_goes_here");
form.append("file", fs.createReadStream(fileName));
var request = https.request({
method: 'post',
host: 'example.org',
path: '/upload',
"rejectUnauthorized": false,
headers: form.getHeaders()
});
form.pipe(request);
request.on('response', function(res) {
console.log(res.statusCode);
});
当我运行此代码时,会返回一个内部服务错误(代码:500),该错误表示MultipartFile参数&#34; file&#34;不在场。
如何使用multipart文件作为参数成功提交POST请求?
谢谢!
答案 0 :(得分:0)
fileName应该是本地计算机中文件的路径
SELECT *,
(SELECT SUM(B.AUTHORS_ID) FROM FOLLOWERS B WHERE A.AUTHORS_ID=B.AUTHORS_ID) FOLLOWERS,
(SELECT SUM(C.AUTHORS_ID) FROM LINKS C WHERE A.AUTHORS_ID=c.AUTHORS_ID) LINKS
FROM AUTHORS A
如果您没有给出以root开头的绝对路径,那么相对路径可以工作,但它们与process.cwd()相关,而不是当前正在执行的模块。