【问题标题】:Is there a file size limit to what the data link can store?数据链接可以存储的文件大小是否有限制?
【发布时间】:2021-06-15 12:09:24
【问题描述】:

例如,可以将图像、视频或声音文件存储在数据链路中

在这种情况下,可以使用起始链接存储图像:data:image/jpeg;base64,/.....,后跟许多字符。但是,是否有一定的文件大小限制,数据链无法容纳和存储?

在我的例子中,用户可以将图像上传到我的网站,然后通过服务器套接字发送,以便其他人可以查看该图像。但是一旦上传,图像数据链接就会存储在它们的 localStorage 中,然后发送到服务器端套接字。但是,在 localStorage 中存储 5mb 是有限制的。这将导致用户必须在 localStorage 的能力限制下上传或使用图像。我质疑是否可以简单地将图像链接存储在一个变量中,因为图像只需要发送以便其他人可以看到它,它不存储在数据库中。

这是我当前从输入链接存储图像的代码,他们可以从中上传图像:

var image = e.target.result

localStorage.uploadedImage = imgto

然后通过socket发送图片:

socket.emit('<img style="border-radius: 4px; width: 16rem" src="${localStorage.uploadedImage}">`);

无论质量或文件大小,链接可以存储多少图像是否有限制?

【问题讨论】:

  • 什么是“数据链接”?你说的是data:// URL吗?为什么要将此图像存储在 LocalStorage 中? Storage API 不是用来存储二进制数据的,IndexedDB 是。
  • 对,不知道叫什么
  • 那么,不,本身没有限制,尽管使用这些 URI 的东西很可能有限制。比如 V8 的字符串限制为 512MB,一些浏览器对地址栏的设置有限制等。
  • 我只是在 标签中使用 data://URL,所以没有限制?
  • 嗯,是的,如果你通过 js 设置这个 url,你将面临我所说的 V8 的限制(但是 512MB 的图像已经是一个大图像 ;-))但是在你的代码中你正在经历LocalStorage,在大多数浏览器中仅限于 5MB IIRC,这将是您的第一个问题。如果图像来自 然后使用 blob:// URL 您将节省大量内存。

标签: javascript html image image-processing


【解决方案1】:

如果您担心客户端的存储限制,请使用Blob 来存储图像。 Google Chrome 中的 blob 存储系统允许将千兆字节存储在 blob 中,我想其他浏览器也有类似的容量,尽管我从来没有理由调查这种限制。有关 Google 实施的详细信息,请参阅Chrome's Blob Storage System Design

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 2020-09-23
    相关资源
    最近更新 更多