NSURLSessionのuploadTaskWithRequest:FromFile:を使用して、バックグラウンドでファイルをアップロードしています。これはうまくいきますが、ファイルの特定の部分だけをアップロードしたいと思います。だから私はファイルの特定の範囲をアップロードするアップロードタスクを取得しようとしています。NSURLSessionUploadTask - コンテンツの範囲を指定します。
私は例えば、コンテンツ・レンジとレンジヘッダを設定しようとしました。:
[request addValue:@"bytes 2367488-7056719/7056719" forHTTPHeaderField:@"Content-Range"];
[request addValue:@"4689232" forHTTPHeaderField:@"Content-Length"];
しかし、これは動作しません - アップロードセッションはとにかくファイル全体を送信します。 Rangeヘッダーを保持し、Content-Lengthヘッダーをファイル全体のサイズで上書きします。
これを行うことができますか?
バックグラウンドアップロードタスクでは、アップロードの再開に関する参照がありました。これは本質的には同じものです(例:this質問)。しかし、特定の範囲を送信するための直接参照はありません。
これまでの私の唯一の解決策は、ファイルの切り刻んだバージョンをディスクに書き込むことです。私はそれを避けたいと思います。
私はRFCを見ていますが、Rangeヘッダーをアップロードに使用できることは明らかではありません。あなたがしていることが合法であることを証明できますか? – matt
@matt - https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16によると、「部分的なボディーエンティティ」のPUTでContent-Rangeを使用することがあります。私がやっている。 RangeとContent-Rangeの両方を設定しようとしましたが、どちらも効果がありません –
より正確だと思われるContent-Rangeヘッダーを表示するための質問を修正しました。 –