【问题标题】:What is a JavaScript Blob object, why is it useful?什么是 JavaScript Blob 对象,它为什么有用?
【发布时间】:2019-07-01 19:21:37
【问题描述】:

我最近遇到了 JavaScript Blob 对象,我用它来初始化一个 web worker,其中代码包含在文档的脚本标记中。

基于MDN 文档:

Blob 对象表示不可变的原始数据的类似文件的对象。 Blob 表示不一定是 JavaScript 原生格式的数据。

这听起来像是一个袋子,可以将一组东西放入共享一个 MIME 类型的东西中。这个观点我错了吗,这个观点不完整吗?

为什么需要/有用的对象?

【问题讨论】:

  • 它只是一个比 String() 更好的二进制字符串。一个字节数组。没有Unicode强制。您可以使用它来存储无法正确存储在普通 js 字符串中的 mp3 或 jpg。你使用 FileReader() 或 URL.createObjectURL() 来读取内容,或者在 web workers 中使用 FileReaderSync。
  • @dandavis 好吧,现在这绝对是有意义的,谢谢。

标签: javascript


【解决方案1】:

Blobs 本身并不是很有用。它们的有用之处在于它们可以处理许多旨在处理Files 的调用。其中最重要的是URL.createObjectURL(),它可以用来创建一个URL,然后你可以在HTML标签的href或src属性、@import语句和CSS中的url()值等中使用。

基本上,Blob 为 JavaScript 提供了类似于临时文件的东西,URL.createObjectURL() 让您可以将这些 blob 视为 Web 服务器上的文件。

【讨论】:

    【解决方案2】:

    您可能需要通过 API 发送 URL 需要类似文件的数据。

    Blob 允许您在客户端上构建类似文件的对象,您可以将其传递给期望 url 的 api,而不是要求服务器提供文件。

    查看更多here。

    【讨论】:

    • 嗯,这当然符合我如何使用它的描述。
    • Blob 本身并不像从远程 URL 看到的文件,您需要先使用 FormData 来转换它们。 Blob 本身也不提供 URL,尽管您可以使用 FileReader 或 URL.createObjectURL 从 Blob 创建一个,并且您可以通过 xhr.responseType='blob' 从 ajax 获取它们,因此虽然您的答案暗示了 blob 的不同潜在方面,它没有提供很多信息。
    • 也是模拟 api 调用的好方法
    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2014-06-30
    • 2017-03-16
    • 1970-01-01
    • 2010-09-07
    相关资源
    最近更新 更多