0

Amazon s3 にファイルをアップロードできるようにする必要がある iOS アプリに取り組んでいますが、いくつか問題があります。この関数は、s3 バケット内に正しいキーまたはパスを作成しますが、ファイル自体はアップロードしません。以下は、私が試したオプションの1つのコードです

if (self.s3 == nil) {
        self.s3 = [[AmazonS3Client alloc] initWithAccessKey:[Config getS3Key] withSecretKey:[Config getS3Secret]] ;

    }
  [self performSelectorInBackground:@selector(processBackgroundThreadUploadInBackground:)
                           withObject:params];

}


- (void)processBackgroundThreadUploadInBackground:(NSMutableDictionary *)params
{


    S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:@"staging/videos/" inBucket:@"aaa.aaaaa.com"];
    por.contentType = @"video/mp4";
    por.data        = [NSData dataWithContentsOfURL:[NSURL URLWithString:[params valueForKey:@"takeurl"]]];

//    por.contentType = @"image/png";
//    por.data        = [params valueForKey:@"takeimage"];


    S3PutObjectResponse *putObjectResponse = [self.s3 putObject:por];
    [self performSelectorOnMainThread:@selector(showCheckErrorMessage:)
                           withObject:putObjectResponse.error
                        waitUntilDone:NO];
}

これにより、s3 のバケット内にキー パス staging/videos/ が作成されますが、ファイルは存在しません。画像ファイルでもこれを試しました。プッシュしようとしているデータがゼロでないことを確認しました。サーバーから取得したxml応答は、コンテンツの長さが0であることを示しています。s3 SDK からのマルチパート アプローチも試しましたが、同じ結果が得られました。誰かが私が間違っていることを見ることができますか?

4

1 に答える 1

3

私は明らかにこの応答に本当に遅れていますが、将来誰かがこの問題を抱えている場合に備えて、あなたはあなたの要求を間違って構成していました.

行うことによって:

S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:@"staging/videos/" inBucket:@"aaa.aaaaa.com"];

キーの最後にバックスラッシュを付けると、ファイルではなくフォルダーを作成していました。キーは、サフィックス ex を含むファイル名で終了する必要があります@"staging/videos/video.mp4"

于 2014-04-09T17:21:48.733 に答える