我的服务器正在为S3签名上传生成信息。当我将这些信息传递给iOS时,它适用于小文件。有时它也适用于更大的作品,但它经常超时。我目前正在通过WIFI在iOS 7上进行测试。在大约35 MB的文件中,大约60%的文件超时后通常会超时,但有时会完成,有时甚至超时。超时使用签名URL从iOS发布到S3
我的服务器生成以下信息,我将其作为表单部件传递给POST。 (我也尝试过与类似的结果参数):
- AWSAccessKeyId
- 内容类型
- ACL(设置为私有)
- 斗
- 关键
- 政策
- 签名
- success_action_redirect
以及一个URL。
这里是我的代码生成上传:
AFHTTPRequestOperation *op = [manager POST:url
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
if(throttle)
[formData throttleBandwidthWithPacketSize:kAFUploadStream3GSuggestedPacketSize delay:kAFUploadStream3GSuggestedDelay];
for(id key in parameters) {
NSString *val = parameters[key];
[formData appendPartWithFormData:[val dataUsingEncoding:NSUTF8StringEncoding] name:key];
}
NSError *error;
if(![formData appendPartWithFileURL:videoUrl name:@"file" fileName:@"movie.mov" mimeType:@"video/quicktime" error:&error]) {
// handle the error
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
//success
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if(error.code == -1021 && !throttle) {
//try again with throttle:
}
NSLog(@"Error: %@", error);
// handle error
}];
这会产生以下错误:
Error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x1aa15130 {NSErrorFailingURLStringKey=XXX, NSErrorFailingURLKey=XXX, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x1ab94290 "The request timed out."}
UPDATE:
有,所以我要提几个类似的问题。很多人在Heroku超时时遇到问题,但我直接上传到S3。
这个人似乎有同样的问题,上传到自己的服务器: - Uploading large files on iOS with AFNetworking - error Request Timeout
这个问题看起来像使用AWS库类似的问题,但他们没有提供任何代码:
Uploading to Amazon-S3 via AFNetworking
这个问题似乎有关,但看着源,它似乎张贴文件时长度是考虑到:
https://github.com/AFNetworking/AFNetworking/issues/1510#issuecomment-29687300
嗨@Bjorn Roche我有与上传视频文件相同的问题。你解决了你的问题吗?如果是的话,你可以发布你的解决方案吗? – Shamsiddin
我已经通过使用较小的文件解决了这个问题,这是我现在需要做的事情。如果问题再次出现,我可能会切换到上传到服务器并使用服务器传输到S3,而不是尝试直接上传到S3,因为它似乎没有超过几个兆赫:( –