1

对于 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);
        }
    });
});
4

1 回答 1

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' });
 }

然后在文件字节字段中使用它。

于 2020-05-19T12:00:41.607 回答