javascript - 在 blob 上设置内容类型

标签 javascript

我们正在将 Blob(图像)传输到 websocket 并将其渲染到另一端的 Canvas 上。

当我对 blob 使用 createObjectURL 时,我收到此警告:

Resource interpreted as Image but transferred with MIME type text/plain: "blob:https%3A//example.com/demo".

我们使用以下代码创建对象 URL。 blob 是通过客户端的 socket.binaryType = "blob"; 标准 websocket 发送的:

socket.onmessage = function(e) {
  var blob = e.data;
  var url = (window.URL || window.webkitURL).createObjectURL(blob);

  var image = document.createElement('img');
  image.src = url;
}

我能想到的解决此警告的唯一方法是使用以下代码创建 blob 的副本,但我不想引入复制所有数据的开销:

var blob = new Blob([e.data], {
  type: 'image/gif'
});

该方法每秒被调用数十次。

关于如何在不使用 new Blob 创建重复的 Blob 对象的情况下设置 blob 内容类型的任何想法?

最佳答案

假设您有 Blob实例(blob)。您可以在其上使用 slice 方法:

blob = blob.slice(0, blob.size, "image/jpeg")

就是这样。

它只是创建一个具有相同数据但具有新类型的新 blob。

关于javascript - 在 blob 上设置内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18998543/

相关文章:

javascript - 为什么 Chrome console.log 以如此烦人的方式显示 String 对象?

javascript - 隐藏/显示 Canvas 内的图像

javascript - HTML/Javascript 检查窗口关闭并执行功能

javascript - 正则表达式检查 JavaScript 中的纬度/经度

javascript - Jquery - Ajax : SyntaxError: JSON. 解析:意外字符

javascript - 根据当前页面以不同颜色突出显示主菜单中的链接

javascript - 将值写入表单字段 - 值写入多次

javascript - 为什么不以浏览器特定的字节码发送 JavaScript 文件?

javascript - 在 JavaScript 中解析 XML

javascript - 向每个表行添加仅影响该表行的事件处理程序?