【问题标题】:Upload file from iOS to Amazon S3将文件从 iOS 上传到 Amazon S3
【发布时间】:2015-01-20 10:55:10
【问题描述】:

我正在尝试将使用 UIImagePickerController 录制的短视频上传到 Amazon S3。我正在关注看似简单的 Amazon 示例代码,但我的文件没有出现在我的存储桶中。

我正在记录委托方法,奇怪的是 totalBytesWritten 小于 totalBytesExpected。

这是我的代码:

AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:AWS_ACCESS_KEY withSecretKey:AWS_SECRET_KEY];
S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:@"test.mov" inBucket:@"mybucket"];
por.contentType = @"video/quicktime";
NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
por.data = videoData;
por.delegate = self;
[s3 putObject:por];

获得任何响应的唯一委托方法是报告字节。其他人没有被调用。

更新

如果文件非常小,它实际上可以工作。一个 110000 字节的文件上传正常。它每次都停在 196608 字节处。如果文件小于它会上传。

【问题讨论】:

    标签: ios amazon-web-services amazon-s3


    【解决方案1】:

    所以这里有两个问题。由于文件很大,我改用S3TransferManager 我还设置了至关重要的端点。最终代码为:

    AmazonS3Client *s3 = [[AmazonS3Client alloc] initWithAccessKey:AWS_ACCESS_KEY withSecretKey:AWS_SECRET_KEY];
    s3.endpoint = [AmazonEndpoints s3Endpoint:US_WEST_2];
    S3TransferManager *transferManager = [S3TransferManager new];
    transferManager.s3 = s3;
    transferManager.delegate = self;
    s3.endpoint = [AmazonEndpoints s3Endpoint:US_WEST_2];
    NSData *videoData = [NSData dataWithContentsOfURL:_videoURL];
    [transferManager uploadData:videoData bucket:@"bucketname" key:@"test.mov"];
    

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 2014-05-01
      • 1970-01-01
      • 2012-01-05
      • 2019-12-10
      • 2013-09-09
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多