将base64EncodedData转换为二进制并在postman中将其作为文件下载

问题描述 投票:0回答:1

我正在致力于自动化一组新的 API,遇到的一个问题是其中一个 API 返回 Base64 编码的文件。 例如:

var base64EncodedData=iVBORw0KGgoAAAANSUhEUgAAAMsAAAAyCAYAAADyZi/iAAADsElEQVR42u2aMWgUQRSGwxVBJI2E4wiSJsgRJNiIpDhEBLGQKyRgIUFCEIJISGUnFiIBkRQpJK1YhECwSiGBIFcEsZEQgkgaEREJEpBDRIIcrG9gDsdxbnd2s7u3d34fPEKSebM7M++fffN2BwYAAAAAAAAAAAAAAKDXCCwyukZJ7JbYutgnsZ9irayvC38W4GLgoMfGsGbdvgqisQT9nNG+JqtFEIt0OS62H0RARGcXZCfFPvSBWIbFvlpD2E7Qz7bVh+pzuNtike6G9JMkQCzdC7Llfpl0ueUbjmHMx/BfcPhPFSENk+7uW91/FLsiNkgU5xNcNWPym/2wQ+lc3uS72KiH35jYD8v3RVHOLNJdw+r+MhGcX1CdsNKv230ilrLYoTWULQ+/Lcvnm1ilQGKxhVwiivMLqiVj4ht5VXNyGtu0I52aDWl/x9F+ukjVMCpe3QumSWPej9pVo6wWW7q6pqtVB2K/dLVpV+xR2OFZ/ld3+O2JPREbibjmhuNJMeJoN6pTNZONhOPsOH/GHDSNseyILUaNpZ82sl4TyqBVfryXxoK4fHVK9CqieKNSpktWXxWx1xF+KvivhtzPiG4TKgJH+tX0Cd4Yc6CqdJsRY1FirUf1RyUsf7E8NuZ2N63dy7Fup8Teea6xCpaqEeRfPP3U7jwRck+zDp+bxv9n4qRrCeZAlXvfeo5FPW0mEUtxhHLBmFeVA5/NUCzrxnuK+fZurZ9sMzq1Mmnot9M7+vcDT783MQ/uh3q3dz15No85vzar+udnfS4q63bq3dacoxCxh1iKk369N+Z1Mc28uMPa7bcDxNG+qs9Lf5VqE/rVQu7LdSZZc5xpVJvTKYsl0E/XTmM5bx/c1dcUnFm6L5aHVhAPZiyWf55cDp+nHfzGI/xWLJ+liPZzHpvy3RTm2JVaVSN8nlk+y4ilu0I5Z+1gtbQXxBEoax4+dVfqksDvpYdPWKGhkdI82zz38JnySQURSz5CKVkH7ZUsypNJPhPRRYA0/JoePq439IH+21hGYrnu4VP2GQtiyT/9UlWmoZzEUvEUchp+R5736Pr2ayHFuc5sLIgle6FMWOlXPc5iHydQcvZrZX29bo8FsWSffu3FPEP0qliCPhJLgFjyF8sD6233MGJBLOCe3FbcjwIRC2L5X8WSOogFsSAWxIJYEAtiQSyQi8A4syAWQCyIBRALYgHEglgQC2JBLIgFsSAWxIJYEAtiAQAAAAAAAAAAAAAAAAAAAAAAAACAAvIbRNwB01NnU/AAAAAASUVORK5CYII=

我想从这个编码文件创建一个图像文件。尝试使用“atob”将base64转换为二进制格式的多种方法。但是,一旦我获得字节数组形式的二进制数据,我就无法将其下载到本地以在下一个请求中使用它。

逻辑1: // 将 base64EncodedData 转换为二进制并登录到控制台。

atob(response.base64EncodedData)
console.log(atob(response.base64EncodedData));

// 将base64编码数据转换为byteArray的逻辑。

var binaryData = atob(response.base64EncodedData);
var byteArray = new Uint8Array(binaryData.length);
for (var i = 0; i < binaryData.length; i++) {
    byteArray[i] = binaryData.charCodeAt(i);
    console.log(byteArray[i])
}

使用逻辑 1:我能够将 base64EncodedData 转换为二进制并将其记录在控制台上。但是,还无法将其作为 png 文件下载到我的本地。 使用逻辑2:我能够将base64EncodedData转换为字节数组但是,仍然无法将其转换为文件。

我使用以下逻辑将其转换为文件,但不幸的是:

const buffer = Buffer.from(byteArray);
const folderPath = 'C:/test/downloadedFile/';
const fileName = 'example.png'; 
const filePath = folderPath + fileName;
fs.writeFileSync(filePath, byteArray);

这会抛出 TypeError: fs.writeFileSync 不是函数

有人可以帮我解决这个问题吗?

javascript postman javascript-objects postman-pre-request-script postman-native-app
1个回答
0
投票

据我所知,这在邮递员中不可能直接实现。相反,您可以创建本地自定义 Web 服务/API,并在获得 Base64 响应后点击该端点。本地API应该负责将其转换为文件并将其存储到本地文件系统。

相关参考: 自动将base64解码值转换为PDF文件并下载到电脑

替代解决方案-1:手动下载

YouTube:在 Postman 中上传、下载和可视化文件

替代解决方案-2:可视化工具

另一种方法是可视化图像或文件。但这在自动化中没有用。

© www.soinside.com 2019 - 2024. All rights reserved.