如何在HTML5中恢复损坏的上传

时间:2011-10-09 13:51:58

标签: javascript html5 file-upload local-storage resume

我正在尝试将简历功能添加到html5文件上传器。

我需要能够在浏览器关闭(并重新打开)后恢复,并且我丢失了文件对象,我不希望用户再次拖动/打开文件。

到目前为止,我使用java applet来做这件事,但我希望找到一个针对这个问题的html5解决方案。

我考虑过将文件保存在本地存储中,但它们太大了。

有没有办法只保存文件对象的路径或任何其他可能帮助我重新打开文件的信息而不要求用户重新打开文件?

3 个答案:

答案 0 :(得分:5)

您可能想要试用Resumable.js - JavaScript Library Providing Multiple Simultaneous, Stable And Resumable Uploads Via The HTML5 File API(或其域www.resumablejs.com)。

可恢复的。 js是一个JavaScript库,通过HTML5文件API提供多个同步,稳定和可恢复的上传。

该库旨在通过HTTP将容错引入上传大文件。这是通过将每个文件分成小块来完成的;无论何时上传块都失败,都会重试上载,直到该过程完成。这允许上载在本地或服务器丢失网络连接后自动恢复上载。此外,它允许用户暂停和恢复上传而不会失去状态。

Resumable.js依赖于HTML5文件API以及将文件分块成小块的能力。目前,这意味着支持仅限于Firefox 4+和Chrome 11 +。

答案 1 :(得分:1)

抱歉,这是不可能的。关闭窗口后可以使用javascript(FileURL)访问的文件和浏览器之间的链接被破坏(当然,关闭浏览器时)。您可以保存文件的名称和上传的金额/部分,并请求用户再次上传该文件,从用户停止的地方继续,但不会在未经用户同意的情况下自动上传。

/编辑:为什么负面投票?请发表评论,以便我知道我说错了!问题是如何在用户关闭浏览器时恢复上传。这是不可能的。当浏览器保持打开并且连接丢失时,可以停止/恢复上载,但是当用户关闭浏览器时(参考丢失)则不能。但是,您可以将文件复制到temporary filesystem,然后从那里继续上传,但这需要用户同意,并且仅限于用户规定您使用的空间量。

答案 2 :(得分:0)

这适用于较新的浏览器(Chrome,Firefox)。

youtube上传器就是一个很好的例子。 http://support.google.com/youtube/bin/static.py?hl=en&topic=1719827&guide=1719823&page=guide.cs&answer=1672758

http://www.youtube.com/watch?v=L5ebSn9HgJ4

我不完全确定他们的实现是如何完全有效的,但这是可能的。