【问题标题】:Loading binary data resources (just like images, audio, etc) in javascript?在javascript中加载二进制数据资源(就像图像、音频等)?
【发布时间】:2019-02-07 15:01:01
【问题描述】:

我可以像这样加载远程资源,例如图像、音频等:

var picture = new Image();
picture.src = 'https://example.com/something.jpg';

var sound = new Audio();
sound.src = 'https://example.com/music.mp3';

还有办法对二进制数据执行此操作吗?即喜欢:

var data = new DataObject();
data.src = 'https://example.com/binary.dat';

上面的例子中有没有像想象中的DataObject这样的东西,或者我可以这样设置吗?

【问题讨论】:

  • 你可以使用ajax...例如var xhr = new XMLHttpRequest(); xhr.open('GET', '/binary.dat', true); xhr.responseType = 'arraybuffer'; xhr.onload = function (e) { console.log('data', this.response); }; xhr.send();
  • 是的,我知道 ajax,但这只允许我从自己的域加载资源。我想加载 remote 资源(二进制数据),例如从 CDN。就像我可以加载远程图像和声音资源一样。
  • “加载”访问字节是什么意思?
  • @RolandStarke 是的,只需访问原始数据。例如获取 UInt8Array 中的字节或其他内容。
  • @RolandStarke 这只是在代码中覆盖跨域的问题:jsfiddle.net/0pn9yLc6

标签: javascript resources binary-data


【解决方案1】:

你可以试试Blob 'application/octet-stream' 类型

【讨论】:

  • 谢谢,但 Blob 不仅仅用于生成二进制数据对象,它们允许它们保存本地,即作为下载提供给访问者?
  • 它使用 url 创建类似文件的对象,您可以将其作为来自服务器的文件进行管理
  • 不确定我是否理解正确。我可以以某种方式创建一个Blob 并从https://some.remote.location/data.bin 加载其内容,然后访问我的代码中的数据吗?
  • 如果这是你的问题,它无法绕过 CORS
【解决方案2】:

您可以查看以下内容:developer.mozilla.org/en-US/docs/Web/API/Streams_API 我相信这就是您要搜索的内容。

随着 JavaScript 可以使用 Streams,这一切都发生了变化——您现在可以在客户端可用 JavaScript 一点一点地开始处理原始数据,而无需生成缓冲区、字符串或 blob。

【讨论】:

    猜你喜欢
    • 2014-04-19
    • 2011-06-23
    • 2010-11-08
    • 1970-01-01
    • 2013-01-11
    • 2012-11-28
    • 2012-11-15
    • 2011-01-21
    相关资源
    最近更新 更多