私は大きなファイル(GB +)をHTTP PUT経由でアップロードできるプロジェクトを進めており、アップロードを再開する方法を実装する必要があります。ファイルがアップロードされてファイナライズされると、ファイルは完成し、変更することはできません。これまでのところ、私は心の中で2つのオプションを持っていますが、完璧にフィットどちらも:HTTPアップロードの再開を実装する最良の方法の提案
オプション1
クライアントは、それが存在しない場合、いずれかの404を返しますファイルの最初のHEAD要求またはファイルを送信します詳細は、X-Can-Resume
などの行に沿ったHTTP X-Headerなどの現在のサイズや、ファイルを再開できるかどうかを指定するためのもの、およびそれに含まれるバイトを指定するRange
ヘッダーなどの詳細が含まれます。これはOKと思われますが、私はHTTP標準から削除するので、X-Headerに熱心ではありません。
オプション2
クライアントが0バイトのContent-Length
ヘッダなし体とPUT要求を送信し、サーバは次にするかどうかを示す308 Resume Incomplete
(ここでhttp://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal提案されているように)、または202 Accepted
ヘッダを返送することができます再開するか、最初からやり直してください。これは非標準ヘッダーの使用とは別に受け入れられるようです。
これを実装する最良の方法についての他の提案はありますか?
おかげで、 Jのいずれかの解決策で
はい、私はクライアントとサーバーの両方の実装をコーディングします。私はギアズが死んでいることを知っていますが、それは私が問題の解決策に見いだした最も近いものです。データを検証するために署名を使用していますが、転送を開始する最善の方法は不明です。私は現時点ではオプション2に向かっていますが、私はまだこの時点でいずれの方法でも確信していません。 – JWood