Node.js以多部分文件作为参数的POST请求

时间:2016-07-12 01:27:34

标签: javascript node.js

我需要在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请求?

谢谢!

1 个答案:

答案 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()相关,而不是当前正在执行的模块。