【发布时间】: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