我想在下载时实现它可以被用户暂停、停止。如何使用 DownloadManager 实现这一目标?
3 回答
您可以从队列中删除下载。然后您可以再次启动它,在Range
将它重新添加到队列时传递 HTTP 标头(如提到的 TryTryAgain)。我不相信这目前可以更容易地完成。
可能对您来说“暂停”不是必需的?由于DownloadManager实际上不需要暂停即可恢复。
相反,您可能会因恢复而绊倒?看看这是否有帮助:
如何恢复中断的下载解决方案在哪里实现 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();
除非您实际上需要允许“暂停”(因为切换文件下载优先级、维护列表或其他更复杂的东西)而不只是提供恢复功能,否则应该会有所帮助。
您的意思是在 Web 应用程序中执行此操作吗?
我也在考虑同样的事情。这可能使用闪光灯或银灯等,但在纯 HTML 中?
在服务器端,我们可以使用 RandomAccessFileReader(Apache) 或类似的 FileReader(以字节为单位)来访问文件并写入输出流。我们也可以记住用户在之前的会话中下载了多少字节。但问题是没有标准的方法将文件保存到客户端本地文件系统中的磁盘。您可以在 IE 中使用 ActiveX 对象来编写一些文件,前提是它是顺序(纯文本)文件而不是二进制文件(如 mp3、flv 等)。但是这个 ActiveX 不是一个解决方案。因此,您可能需要为您的网站设计类似“下载器”的内容。就像 Youtube 下载器一样。