对于API,我需要从本地pdf文件创建一个字节数组。
我已经检查过StackOverflow,但现有的解决方案不起作用。每当我尝试执行代码时,我都会收到来自soap API的错误请求。如果我发送零字节,那么我得到一个发送零字节的错误消息。凭证也有效。我唯一无法解决的是如何从pdf文件生成一个字节数组并通过node-soap发送它。
这是我的代码:
var fs = require('fs');
var zlib = require('zlib');
var soap = require('soap');
var path_to_wsdl = "url to wsdl";
var data = {};
data['Authentication'] = {
'Username': "myusername",
'Password': "mypass"
}
data['Options'] = {
'Testmode': true
}
data['Recipient'] = {
'Company': "Firma",
'FirstName': 'Vorname',
'Name': 'Name',
'Address': 'Street Nr.',
'Zip': "68753",
'City': 'Stadt',
'Country': 'DE'
}
var smabuf = fs.createReadStream('test.pdf');
data['File'] = {
'Filename': "test.pdf",
'Bytes': smabuf,
'Color': false,
'Duplex': false,
'Enveloping': 0
}
soap.createClient(path_to_wsdl, function (err, client) {
if (err) {
console.log(err);
}
client.BriefManager.BriefManagerSoap.CreateJob(data, function (err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
}
});
});
答案 0 :(得分:0)
我正在解决此问题,我的解决方案是使用fs库读取base64编码的目标文件并在请求中发送它。
/**
* Get a file buffer as a bytes array string
* @param filePath Path to the file
*/
getFileAsBytesArray(filePath) {
return fs.readFileSync(filePath, { encoding: 'base64' });
}
然后在“文件字节数”字段中使用它。