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分钟,但他们会一直盯着屏幕.
在我首先发布这个问题之前,似乎我没有完成我的作业.我发现这个很棒的教程完全符合我的要求.我会删除我的问题,但是我会留下它以防万一它可以帮助像我这样的其他无助的人.
基本上,它有一个委托方法.做这样的事情:
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)
它将被上传的每个数据包或其他内容调用.请务必设置代表.
(不确定你是否需要设置两个代表)
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |