2013-12-12 46 views
4

我的服务器正在为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

+0

嗨@Bjorn Roche我有与上传视频文件相同的问题。你解决了你的问题吗?如果是的话,你可以发布你的解决方案吗? – Shamsiddin

+0

我已经通过使用较小的文件解决了这个问题,这是我现在需要做的事情。如果问题再次出现,我可能会切换到上传到服务器并使用服务器传输到S3,而不是尝试直接上传到S3,因为它似乎没有超过几个兆赫:( –

回答

-1

它发生在我身上的视频文件以及mp4文件。 问题是我的视频文件很小(最大2-5MB)。

我使用版本10+(包括最新版本)的AWSiOSSD 2.5.2,iPhone 6s 7和7plus。

到目前为止还没有解决方法,包括otusweb在6个月前发布的主题。