Nodejs 将附件发布到 JIRA

Fai*_*bal 9 node.js express jira-rest-api

我收到了 http POST 响应 OK 200,但我看不到 JIRA 问题上的文件。根据我的研究,我可以理解我随请求发送的 formData 可能存在一些问题。下面是我的代码:

var newBuffer = new Buffer(req.Payload, 'base64');
var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
frequency: 10, // in milliseconds.
chunkSize: 2048 // in bytes.
});

// With a buffer
myReadableStreamBuffer.put(newBuffer);
var formData = {
'file': {
'content': myReadableStreamBuffer,
'filename': req.FileName,
'mimeType': req.MimeType //mimeType from JSON
}
};

var options = {
url: 'https://comapny.atlassian.net/rest/api/2/issue/' + req.ReferenceId + '/attachments',
method: "POST",
json: true,
headers: {
'ContentType': 'multipart/form-data',
'Authorization': 'Basic ' + new Buffer(config.jira.jiraUser.userName + ':' + config.jira.jiraUser.password).toString('base64'),
'X-Atlassian-Token': 'nocheck'
},
formData: JSON.stringify(formData)
};

request(options,
function (error, response, body) {
if (error) {
errorlog.error(`Error Message : PostAttachmentToCSMS : ${error}`);
return response.statusCode;
}
else {
successlog.info(`Attachment posted for issue Key: ${req.ReferenceId} ${response.statusMessage}`);
return response.statusCode;
}
});
Run Code Online (Sandbox Code Playgroud)

我可以从 myReadableStreamBuffer 写入文件,所以看起来没问题。请帮我找出问题所在。非常感谢!

Fai*_*bal 5

在花了更多时间之后,我找到了 formData 的正确格式:

var newBuffer = new Buffer(req.Payload, 'base64');
var formData = {
    file: {
        value: newBuffer,
        options: {
            filename: req.FileName,
            contentType: req.MimeType
        }
    }
};
Run Code Online (Sandbox Code Playgroud)