niva icon indicating copy to clipboard operation
niva copied to clipboard

Niva.api.http如何获取二进制数据?

Open pharaoh2012 opened this issue 2 years ago • 5 comments

Niva.api.http返回的body为string类型,如何获取二进制数据,例如获取一个图片的数据。

能否参照浏览器的fetch方法,实现一个 Niva.api.http.fetch

pharaoh2012 avatar May 18 '23 06:05 pharaoh2012

同上

callmeyan avatar May 18 '23 09:05 callmeyan

直接参照 fetch 目前不是很好实现,不过可以增加 base64 编码支持以获取二进制数据。

bramblex avatar May 20 '23 16:05 bramblex

使用base64也可以。我看系统中多处用base64处理二进制(例如file),但是原生的atob和btoa函数和标准base64转换有差异,能否提供二进制和base64相互转换的辅助函数。

pharaoh2012 avatar May 22 '23 00:05 pharaoh2012

这个 base64 和二进制相互转换的例子在 NivaDevtools 里面就有应用,在 NivaDevtools 中构建 Niva 应用过程中,就用 base64 转换成 ArrayBuffer 用于合并压缩 Niva 项目的资源文件。

https://github.com/bramblex/niva/blob/main/packages/devtools/src/build-scripts/base.ts#L44

bramblex avatar May 22 '23 06:05 bramblex

谢谢,是我理解错了,atob转中文时候会报错,所以我也认为不适合二进制数据,实际是可以的

pharaoh2012 avatar May 22 '23 07:05 pharaoh2012