ASIHTTPRequest が放棄されたので、ios/osx プロジェクトを AFNetworking 2.0 を使用するように移動しました。Amazon S3 PUT リクエストを作成するメソッドを追加する AFHTTPRequestOperationManager のカテゴリを作成しました。それはうまく機能しているすべての署名などを処理します。ただし、アップロードしている画像で問題が発生しています。ファイルは S3 に正常にアップロードされますが、有効な画像 (jpg) ファイルとして認識されません。それらはフォトショップで問題なく開きます(寛容でなければなりません)が、他には何もありません。ファイルを掘り下げて( cat を実行して)、終了境界がファイルにエンコードされていることを示しています
--Boundary+0xAbCdEfGbOuNdArY--
HTTP ヘッダー ファイルを再確認したところ、正しいように見えます。
"Accept-Language" = "en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5";
Authorization = "AWS REDACTED";
"Content-Length" = 228941;
"Content-Type" = "multipart/form-data; boundary=Boundary+0xAbCdEfGbOuNdArY";
Date = "Wed, 30 Oct 2013 18:57:39 +0000";
私は以下を使用してリクエストを作成しています:
NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"PUT" URLString:url.absoluteString parameters:parameters constructingBodyWithBlock:block];
構築ブロックは次のようになります。
__weak UploadPhotoAFS3Op *weakSelf = self;
self.constructingBodyBlock = ^(id<AFMultipartFormData> formData) {
UploadPhotoAFS3Op *strongSelf = weakSelf;
if (strongSelf) {
[formData appendPartWithFileData:resizedPhotoData name:@"image" fileName:strongSelf->_photoToUpload.uuidFileName mimeType:@"image/jpeg"];
}
};
resizedPhotoData が有効であると確信しています。これは、現在動作している ASIHTTPRequest ベースの操作と同じ方法で生成されます。この問題は、ヘッダー (具体的には境界) と関係があります。途方に暮れています。