0

PHP を使用してファイルのダウンロードを再開したいと考えています。この投稿に記載されているように、それを行うには特定のワークフローが必要なので、追加しました。

問題は、ダウンロードを開始すると、downloadmanager はダウンロードが再開可能であることを認識しますが ("Accept-Range" - ヘッダーにより)、再開されたダウンロードを開始すると失敗します。

送信されるヘッダーの出力をデバッグしましたが、機能しない理由が見つかりません。おそらく、現時点で私の見方が悪いか、間違いがどこかにあるのでしょうが、ここに隠れていると思います。

Request: bytes=2967529-
Header: HTTP/1.1 206 Partial Content
Header: content-type: application/x-rar-compressed
Header: Content-Type: application/octet-stream
Header: Cache-Control: private
Header: Accept-Ranges: bytes
Header: Content-Range: bytes 2967529-/52702041
Header: content-length: 52702041
Header: content-disposition: attachment; filename="XXX.rar"

別の試みでいくつかのヘッダーが変更されましたが、それでも機能しません:

Header: Content-Range: bytes 2967529-55669570/*
Header: content-length: 52702041

content-length (および範囲内の最後の整数) は、オフセットが既に差し引かれたファイルサイズです。

敬具

4

1 に答える 1

0

私は自分で問題を解決しました。確かに、間違いはヘッダーの中にありました。

Content-Range と Content-Length は次のように機能するはずだと思いました:

Content-Range: bytes startbytes-totalbytes/bytestobesend
Content-Length: bytestobesent

実際には、次のように機能します。

Content-Range: bytes startbytes-totalbytes/totalbytes
Content-Length: totalbytes

(totalbytes は、送信される章だけでなく、完全なファイルサイズです)

于 2013-09-27T10:47:57.227 に答える