使用 Blob 作为 Flash 对象

Using a Blob as a Flash object

我正在尝试使用存储在 blob 中的 Flash 对象,但是我使用 URL.createObjectURL 返回的 URL 作为嵌入标记的 src 的方法只会导致浏览器将 blob 下载为文件。

这是我生成的 HTML:

<object height="500" width="1000">
    <embed height="500" width="1000" src="blob:http://127.0.0.1:34721/1fa7a01c-25b7-4ad0-ba1d-1ddef61617ce"/>
</object>

这是用于生成 Blob 和 object 标签的 JavaScript:

var blob = new Blob(data, {
               type: 'application/x-shockwave-flash'
           });

document.body.innerHTML += '<object height="500" width="1000" ><embed height="500" width="1000" src="' + URL.createObjectURL(blob) + '"/></object>'

其中 data 是一个 Uint8Array 的数组,每个数组包含 256 个字节的二进制数据。

有问题的 blob 的类型为 application/x-shockwave-flash,与原始 .swf 文件相同(我检查过)。当用于代替对象 URL 时,文件本身可以工作。

据我所知,指向 blob 的对象 URL 可以在普通 URL 可以使用的任何地方使用。嵌入标签是例外吗?

嵌入标记可能会错过通常从响应中获取的 MIME 类型 header。尝试将 "type="application/x-shockwave-flash" 设置为嵌入标签内的属性。

不过,Flash 不再得到广泛支持,我会跨浏览器进行测试,看看是否出现相同的错误。您可能需要将类型添加到旧版浏览器中的 object 标记。