現在、iDeviceからサーバーAPIに大きなファイルをアップロードする必要があります。このために、ASIHTTPRequestライブラリを使用しようとしています。これは、キューに入れられたチャンクの大きなファイルのアップロードを自動的にサポートするためです(これまでは、ファイル全体のバイトを含むNSDataインスタンスを一度に作成し、これをPOSTメッセージに添付していましたが、これにより、 RAMの使用量が多すぎるために、アプリケーションが大きなファイルでクラッシュする)。
問題は、ファイルをアップロードしてHTTP Postメッセージにファイルを追加する必要がある場合、次の構文を使用する必要があることです。
[theUploadRequest setFile:@"" forKey:@"videoupload"];
setFileには、文字列形式のファイルパスが必要です。私が現在抱えている問題は、アプリケーションのサンドボックスにないファイルからファイルパスを取得することが許可されていないように見えることです。アプリケーションにはないが、標準のカメラロールではファイルの外にあるファイルをアップロードする必要があるため。
このクイックテストを実行して、NSDataオブジェクトを作成し、カメラロール内のファイルからのデータを入力して、次のようにパスを指定できるかどうかを確認しました。
NSData *testData = [NSData dataWithContentsOfURL:theContent.defaultRepresentation.url];
NSLog(@"THE SIZE OF THE TEST DATA: %i", testData.length);
「theContent」はALAssetのインスタンスであり、カメラロールから取得されたファイルであることに注意してください。この結果、長さは0になります。これは、単純にそれを実行できないことを意味していると思います。
これを回避する方法はありますか?または、どういうわけかビデオファイルをアプリケーションのサンドボックスにインポートする必要がありますか?