javascript - 在 HTML5 离线应用程序中处理图像?

标签 javascript html image

我们已经使用 HTML5 成功创建了一个离线应用程序。它的作用是将数据存储在indexedDB或者localStorage中,当在线时,本地存储和在线数据库会同步。一切都很好,直到我们决定添加上传图片的功能。

1) 由于应用程序离线工作,我们不能在服务器上传图片,我们要把它们放在哪里?

可能的解决方案:

  • 离线时,保存路径,当用户在线时,通过创建输入元素并将路径分配给其值属性来上传图像。这种方法的问题是我们无法更改 input 元素的 value 属性,也无法获取要上传的图像的完整路径。这个解决方案似乎不太可能。
  • 将图像保存在 indexedDB 或 localStorage 中,这可能吗?

2) 如果我们成功将图片保存在 indexedDB 或 localStorage 中,当用户上线后我们如何上传?

可能的解决方案:

  • WebSocket - 我还没有接触过这个。
  • Flash - 它能在 iPhone 上运行吗?可能不会。

3) 如果我们成功将图片保存到indexedDB或localStorage中,我们将如何在页面上显示它?图片元素使用src属性来决定显示哪张图片,有没有其他方法比如使用图片二值化?

如果您以前遇到过同样的情况,您采取了什么解决方法来实现您的目标?

最佳答案

使用FileAPI在 HTML5 中可用。您可以在那里“上传”您的图像,然后,当服务器重新联机时,您可以传输它们,甚至可以使用传统的 XHR。

FileAPI 可以安全使用,因为大多数主流浏览器都支持它:http://caniuse.com/#feat=fileapi

详细:

1) 将文件写入permamenttemporary 存储(由我们的应用程序定义)。请注意,临时存储在 session 退出时被清除(由浏览器决定)。

教程请看这里:http://www.html5rocks.com/en/tutorials/file/filesystem/?ModPagespeed=noscript

2) 我会使用传统的 XHRequests 来传输它们。它更容易且经过充分测试(您不必从头开始设计新协议(protocol))。

3) 这是最好的事情 :) 您可以直接从文件 API 获取正确的 URL,因此可以从您的缓存中显示图像。看这里:http://www.html5rocks.com/en/tutorials/file/filesystem/?ModPagespeed=noscript#toc-filesystemurls

关于javascript - 在 HTML5 离线应用程序中处理图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18504529/

相关文章:

html - 在手机上查看时页面显得更大?

html - 如何设置内容 div 正确对齐?

CSS3 Box,如何使用框属性在 div 内拉伸(stretch)图像

javascript - JS原型(prototype)返回原型(prototype)代码

javascript - 带有本地存储的下拉 CSS

JavaScript 动画矩形

image - 算法挑战 : Generate color scheme from an image

php - 使用 PHP 从 ZIP 存档中查找和显示图像文件的更简洁的方法

javascript - 将元素乘以数字并使用 jQuery 插入

javascript - 如何从 promise 中获得结果