文件上传到Amazon S3 for iOS的进度条?

Sti*_*Sti 3 file-upload progress amazon-s3 ios

我正在使用Parse的服务,他们已经实现了上传数据的惊人功能,方法如下:

PFFile *objectToSave...; //An image or whatever, wrapped in a Parse-file
[objectToSave saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        //Do stuff after upload is complete
    } progressBlock:^(int percentDone) {
        [someLabel setText:[NSString stringWithFormat:@"%i%@", percentDone, @"%"]];
    }];
Run Code Online (Sandbox Code Playgroud)

让我跟踪文件上传.由于Parse只允许我上传最大10mb文件,所以我选择移动到云区来探索一下.我现在一直在测试亚马逊的S3服务,但我能找到如何上传数据的唯一方法是通过调用[s3 putObject:request];.这将占用主线程,直到它完成,除非我在另一个线程上运行它.无论哪种方式,我都不知道让我的用户知道上传的程度.真的没有办法做到这一点吗?我读到S3的服务的某些浏览器API版本必须使用Flash,或者将所有上传设置为通过另一台服务器,并在该服务器上跟踪,但我不会做其中任何一种.任何人?谢谢.

我的用户应该上传大小不超过15mb的视频,我是否必须让他们在未知的时间内盯着旋转的轮子?由于连接不良,他们可能需要等待15分钟,但他们会一直盯着屏幕.

Sti*_*Sti 8

在我首先发布这个问题之前,似乎我没有完成我的作业.我发现这个很棒的教程完全符合我的要求.我会删除我的问题,但是我会留下它以防万一它可以帮助像我这样的其他无助的人.

基本上,它有一个委托方法.做这样的事情:

S3PutObjectRequest *por = /* your request/file */;
S3TransferManager *tm = /* your transfer manager */;

por.delegate = self;
tm.delegate = self;

[tm upload: por];
Run Code Online (Sandbox Code Playgroud)

然后使用这个适当命名的delegate-method:

-(void)request:(AmazonServiceRequest *)request 
    didSendData:(long long)bytesWritten 
    totalBytesWritten:(long long)totalBytesWritten 
    totalBytesExpectedToWrite:(long long)totalBytesExpectedToWrite
{
    CGFloat progress = ((CGFloat)totalBytesWritten/(CGFloat)totalBytesExpectedToWrite);
}
Run Code Online (Sandbox Code Playgroud)

它将被上传的每个数据包或其他内容调用.请务必设置代表.

(不确定你是否需要设置两个代表)