我希望在下载时实现这一点,它可以暂停,由用户停止。如何使用DownloadManager实现此目的?
答案 0 :(得分:5)
您可以从队列中remove a download。然后你可以再次启动它,在重新添加到队列时传递Range
HTTP标头(如提到的TryTryAgain)。我不相信目前可以更容易地做到这一点。
答案 1 :(得分:2)
对你来说,“停顿”可能并不完全是必要的吗?实际上DownloadManager doesn't need to pause将被恢复。
相反,你可能会因为恢复而被绊倒?看看这是否有帮助:
how to resume an interrupted download解决方案正在实施Range请求标头...
// Open connection to URL.
HttpURLConnection connection =
(HttpURLConnection) url.openConnection();
// Specify what portion of file to download.
connection.setRequestProperty("Range", "bytes=" + downloaded + "-");
// here "downloaded" is the data length already previously downloaded.
// Connect to server.
connection.connect();
除非您需要实际允许“暂停”(因为切换文件下载优先级,维护列表或其他更复杂的内容)而不仅仅提供恢复功能,否则应该有所帮助。
答案 2 :(得分:1)
您的意思是在Web应用程序中执行此操作吗?
我也在考虑同样的事情。这可能是使用flash或sliverlight等,但纯HTML?
在服务器端,我们可以使用RandomAccessFileReader(Apache)或类似的FileReader(以字节为单位)来访问文件并写入输出流。我们可以记住用户在前一个会话中下载了多少字节。但问题是在客户端的本地文件系统中没有标准的方法将文件保存到磁盘。您可以在IE中使用ActiveX对象来编写一些文件,前提是它是顺序(纯文本)文件而不是二进制文件(如mp3,flv等)。但是这个ActiveX不是解决方案。因此,您可能需要为您的网站设计类似“Downloader”的内容。就像Youtube Downloader一样。