繁体   English   中英

如何将字节数组转换为 NodeJS 或 AngularJS 中的文件

[英]How to transform an array of bytes into a file in NodeJS or AngularJS

第三方 API 以字节数组的形式向我发送文件,例如

(244511) [37, 80, 68, 70, 45, 49, 46, 52, 13, 10, 37, 226, 227, 207, 211, 13, 10, 49, 32, 48, 32, 111, 98, 106, 13, 10, 60, 60, 13, 10, 47, 84, 105, 116, 108, 101, 32, 60, 70, 69, 70, 70, 48, 48, 52, 69, 48, 48, 55, 53, 48, 48, 54, 70, 48, 48, 55, 54, 48, 48, 54, 70, 48, 48, 50, 48, 48, 48, 53, 50, 48, 48, 54, 49, 48, 48, 55, 48, 48, 48, 55, 48, 48, 48, 54, 70, 48, 48, 55, 50, 48, 48, 55, 52, 48, 48, 54, 70, 62, 13, …]

我知道文件的原始名称(包括扩展名),但不知道 mime 类型。

我的后端(NodeJS)目前这样做:

const data = JSON.parse(res.body).result[0] // 'data' is the byte array above
res.writeHead(200, { 'Content-Type': 'application/json' })
res.end({ data })

我的前端(AngularJS 1.x)这样做:

var data = rsp.data
var blob = new $window.Blob([data], {type: 'application/pdf;charset=utf-8'})
$window.saveAs(blob, filename)

(我在几分钟前添加的应用程序/pdf 部分可以看到它至少适用于 PDF 文件......它没有)

我真的不知道我应该怎么做才能将该数组转换为正确打开的文件,我已经尝试了所有我设法在网上找到的东西,但无济于事。 文件已保存,但打开时无法使用。

我什至不知道我是否必须更改我的前端或后端,或两者兼而有之。

任何帮助都感激不尽。

解决方案是首先在前端将字节数组转换为Uint8Array 此外,显然不需要在创建 blob 时指定 mime 类型,这非常方便。

var bytes = new Uint8Array(rsp.data)
var blob = new $window.Blob([bytes])
$window.saveAs(blob, filename)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM