javascript - 附加base64编码文件nodejs
问题描述
我正在尝试发送带有附件的肥皂请求。一切正常,除了我发送的附件总是零字节。肥皂服务器接受 Base64 编码的文件,我已经使用代码在 Java 中实现了它
OutputStream outputStream = new ByteArrayOutputStream()
outputStream.writeTo(fileOutputStream);
Base64.encode(outputStream.toByteArray())//argument passed to the function which sends this to the SOAP API
我想用节点复制相同的内容,但我无法这样做。下面是我用来实现这一点的功能。我正在从客户端读取一些文件并尝试将其发送到 SOAP API。我已经在代码中标记了负责读取和附加数据的位置,其余部分仅供参考。
function createSoapEntryWithAtt(req,response){
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
let filesArr = []
for(objkeys in files){
filesArr.push(files[objkeys])
}
return Promise.all(filesArr.map(item => {
return new Promise((res,rej) => {
var oldpath = item.path;
var newpath = 'C:/user/' + item.name;
**var data = fs.readFileSync(oldpath).toString('base64');
let result = []
for (var i = 0; i < data.length; i += 2)// trying to create a 64bit byte array
result.push('0x' + data[i] + '' + data[i + 1])**
console.log(result)
if(data)
res({ [`${item.name}`]: result })
rej("Error occured")
})
})).then(data => {
let url = config.url
var credentials = {
AuthenticationInfo: {
userName: "user",
password: "passwd"
}
}
let args = {
Notes: "Testing From Node App",
}
let count = 0
for (index in data) {
if (count <= 3) {
**for(keys in data[index]){
//console.log(data[index][keys])
args[`Attachment${++count}_Name`] = keys
args[`Attachment${++count}_Data`] = data[index][keys]//Attaching the file read
}
}**
}
soap.createClient(url, function (err, client) {
client.addSoapHeader(credentials)
client.CreateWorkInfo(args, function (err, res) {
if (err) {
console.log("Error is ----->" + err)
} else {
console.log("Response is -----> " + res)
response.end();
}
})
})
})
});
}
解决方案
请忽略这个问题....如果有人在这个问题上浪费时间,谢谢和抱歉。这个错误是我这边的一个粗心的错误args["Attachment${++count}_Name"] = keys
args["Attachment${++count}_Data"] = data[index][keys]
。在这里,当我在两行中增加计数时,附件名称将为 1,然后在第二行中附件数据将为 02,因此名称不包含任何数据。
推荐阅读
- swift - 更新的核心数据模型属性不可访问?
- javascript - 如何在 CKEditor5 中创建 Matcher 实例?
- windows - 使用 PowerShell 按日期过滤文件夹
- ios - 有人可以解释为什么我的 CollectionView 单元格只出现在这种情况下吗?
- javascript - 如何将 React 应用的生产 npm 构建部署到 Azure 应用服务
- android - 在 Android 中删除 ListiView 和 SQLite 行
- php - 如何获取通用布局文件的数据并显示在所有视图上
- excel - 使用 VBA 将附件插入到 XML 标记
- windows - Microsoft 低级、高速运行时数据捕获程序的名称是什么”
- macos - Applescript 如何更改桌面模式(填充屏幕、平铺、中心等)