Scala.js:如何将Array[Byte]转换为Blob?
Scala.js 中 Array[Byte] 转 Blob 的实现方法
在Scala.js环境下,要把Array[Byte]转换成DOM API需要的Blob类型,核心是借助JavaScript的Uint8Array做中间转换,直接看可运行的实现代码:
import org.scalajs.dom.Blob import scala.scalajs.js.typedarray.Uint8Array import scala.scalajs.js def toBlob(input: Array[Byte]): Blob = { // 将Scala原生Array[Byte]转为JS类型化数组Uint8Array val uint8Data = new Uint8Array(input) // 传入Blob构造函数,可自定义MIME类型(按需修改) new Blob(js.Array(uint8Data), js.Dynamic.literal(`type` = "application/octet-stream")) }
关键说明:
- Scala.js的
Array[Byte]可以直接被Uint8Array构造函数接收,二者底层二进制表示完全兼容。 - Blob构造函数要求第一个参数是包含二进制数据对象的数组,所以需要把
Uint8Array包装进JS数组(js.Array(...))。 - 第二个参数是可选配置,
type字段用来指定Blob的MIME类型,比如处理图片可改成image/png,纯文本用text/plain;如果不需要指定类型,可简化代码:new Blob(js.Array(new Uint8Array(input)))
内容的提问来源于stack exchange,提问作者R A
相关产品推荐
相关产品推荐

