1

s3 Signing and Authenticationを使用して、モバイルクライアントで動作するシンガチュアを生成しています。

私の元のクラスはASIHTTPRequestを使用していますが、それをAFNetworkingに変換したいと思います。

ASIHTTPRequestを使用してファイルをs3にアップロードすることにより、s3に固有のヘッダーを設定し、画像をリクエストとして含めるのは簡単です。

 [request setData:data withFileName:filename andContentType:"image/jpeg" forKey:key];

他の提案からのように、私は次のコードを使用してリクエスト付きの画像を送信します

 NSURLRequest *request = [httpClient multipartFormRequestWithMethod:@"PUT" path:@"/johnsmith/photos/puppy.jpg" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
        [formData appendPartWithFileData:imageData name:@"file" fileName:@"puppy.jpg" mimeType:@"image/jpeg"];
    }];

ただし、このリクエストは「Content-Type:image/jpeg」を次のように置き換えます

Content-Type:multipart / form-data; border = Boundary + 0xAbCdEfGbOuNdArY

署名されたメッセージと一致しないため、ファイルをアップロードすることは無効です。

さらにグーグルした後、inputstreamメソッドを見つけました

NSData *imageData = UIImageJPEGRepresentation(uploadImage, 0.5f);
NSInputStream *stream = [[NSInputStream alloc]initWithData:imageData];
operation.inputStream = stream;

このとき、AFNetworkingは

Transfer-Encoding:Chunked

およびs3は、「指定したヘッダーは実装されていない機能を意味します」というエラーに応答します。

更新:回避策として、元のコンテンツヘッダーを置き換える行にコメントを付けるだけです。

4

0 に答える 0