0

Amazon S3 AFNetworking Clientを使用してファイルをS3にアップロードしようとしていますが、問題が発生しています。シミュレーターで実行すると不正なURL応答を受け取り、デバイスで実行すると405応答を受け取ります。405応答を受信すると、ログにはファイルが100%アップロードされたことが示されます。これが正しいかどうかはわかりません。これは私のコードです:

    AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:kAccessKeyID
                                                                        secret:kSecret];
    s3Client.bucket = kBucket;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [paths objectAtIndex:0];
    NSString *path = [documents stringByAppendingPathComponent:@"test.jpeg"];

    [s3Client postObjectWithFile:path parameters:nil progress:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
        NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));
    } success:^(id responseObject) {
        NSLog(@"Upload Complete");
    } failure:^(NSError *error) {
        NSLog(@"Error: %@", error);
    }];
4

1 に答える 1

0

あくまでも推測ですが、

AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:@"kAccessKeyID"
                                                                    secret:@"kSecret"];

kAccessKeyId / kSecret は定数ですよね?通常、定数は次のように定義します。

#define kAccessKeyId @"myKeyId"

したがって、それらの周りに追加の引用符を追加したくありません。コンパイラがそれを許可していることに、私は実際に驚いています。あなたの行はもっと似ているはずです

AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:kAccessKeyID
                                                                    secret:kSecret];

その他の一般的なデバッグ:

  • アクセスしようとしているパスからログアウトし、適切な数のスラッシュがあることを確認します。
  • 405 エラーは通常、特定の URL へのアクセスに使用している方法が無効であることを示します。実際に投稿できますか / 投稿する権限はありますか? これは、不要なときに誤って二重引用符を追加した可能性があるため、S3 ストレージに正しくアクセスできないという私のポイントに戻ります。
于 2012-07-04T02:55:41.097 に答える