ダウンロード時に一時停止したり、ユーザーが停止したりできるようにしたいと考えています。DownloadManager でこれを達成するにはどうすればよいですか?
3 に答える
キューからダウンロードを削除できます。次に、キューに再度追加するときに HTTP ヘッダーを渡して、再度開始できRange
ます (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 Application でこれを行うつもりですか?
私も同じことを考えています。これは flash や sliverlight などで可能だったかもしれませんが、純粋な HTML では?
サーバー側では、RandomAccessFileReader(Apache) または同様の FileReader (バイト単位) を使用してファイルにアクセスし、出力ストリームに書き込むことができます。ユーザーが以前のセッションでダウンロードしたバイト数も覚えています。しかし問題は、クライアントのローカル ファイル システムでファイルをディスクに保存する標準的な方法がないことです。IE で ActiveX オブジェクトを使用して、シーケンシャル (プレーン テキスト) ファイルであり、バイナリ ファイル (mp3、flv など) ではない場合、ファイルを書き込むことができます。しかし、この ActiveX は解決策ではありません。そのため、Web サイト用に「ダウンローダー」のようなものを設計する必要がある場合があります。Youtubeダウンローダーと同じです。