将图片存储在 cookie 中

Posted

技术标签:

【中文标题】将图片存储在 cookie 中【英文标题】:Store a picture in a cookie 【发布时间】:2012-06-23 05:11:20 【问题描述】:

我想在他们的浏览器中存储我的用户的个人资料图片,以便他们每次登录时都可以看到他们的个人资料图片(在登录表单中)(例如,当他们勾选记住我时)。我认为 hotmail 正在做类似的事情。

是否可以将图像存储在用户计算机上并将路径存储在cookie中? cookie的最大大小似乎是4096 Bytes,因此可能很难存储图像本身在 cookie 中。你知道我该怎么做吗?

【问题讨论】:

【参考方案1】:

在 cookie 中存储指向在线图像的链接并使用它来代替确实更有效吗?

每次浏览网页时,都会传输 cookie - 存储图像会增加不必要的带宽。

【讨论】:

每次传输图像都会增加不必要的开销 - 将其存储在 localStorage 中意味着不会发生这种情况。【参考方案2】:

使用 javascript 将其存储在 localStorage 中。

https://web.archive.org/web/20160313121817/https://www.ibm.com/developerworks/mydeveloperworks/blogs/bobleah/entry/html5_code_example_store_images_using_localstorage57?lang=en

【讨论】:

这太棒了!这样做的好处是可以在本地存储图像并减少网络和服务器的使用。剩下的问题是我们需要对二进制图像进行 base64 编码,但 php 似乎很容易做到这一点:base64_encode(). 缓存已在 HTTP 协议中使用了近二十年。为什么要重新发明它?使用标准的<img src="..."> 元素为您的图像文件发送一些缓存标头并将它们作为常规文件提供。 听起来不错 :-) 你只能在 JS 中做到这一点吗? (对于我自己的项目) 很遗憾,我不能同时接受这两个答案,但它们都是非常好的答案。我接受了投票最多的那个。我将发布两个答案的代码。感谢 Jasper 的精彩回答 :-) 仅供参考,我们还可以在javascript中使用encoder script对二进制图像进行base64编码。【参考方案3】:

您能否将图像的路径存储在 cookie 中并使用该值在登录屏幕中呈现它?

【讨论】:

你怎么能这样做?【参考方案4】:

为什么你不想在服务器上存储图片而把路径存储在cookie中?

这看起来更合适,然后在用户计算机上写入额外的数据......

【讨论】:

每次传输图像都会增加不必要的开销 - 将其存储在 localStorage 中意味着不会发生这种情况。 @Jasper Mogg 如果之前看到过图片,是否应该被浏览器缓存,因此无需额外传输

以上是关于将图片存储在 cookie 中的主要内容,如果未能解决你的问题,请参考以下文章

数据库中图片存储为BLOB类型,如何取出转换

将图片存储到数据库中[重复]

将图片存储为文件或存储在诸如 MSSQL 之类的数据库中以用于 Web 应用程序?

将数据存储在博文中的图片中

图片上传存储策略

如何将图片存储在 asp.net mvc 应用程序的 azure blob 存储中?