【问题标题】:Uploading to Amazon-S3 via AFNetworking通过 AFNetworking 上传到 Amazon-S3
【发布时间】:2012-05-17 12:58:53
【问题描述】:

我无法通过 AFNetworking 将文件上传到 S3。当我尝试上传时,我收到回调,表明上传了一小部分文件,然后回调停止,一两分钟后我收到超时消息。

我正在使用AFAmazonS3Client,但它似乎是 AFHTTPClient 的一个非常简单的子类,因此问题似乎不太可能存在。由于我是 AFNetworking 和 S3 的新手,我很确定问题在于输入此消息 :)

我已经下载了 AWS-IOS 开发工具包,并且能够毫无问题地从他们的示例代码中发布图片。所以我不认为这是我的 S3 帐户配置错误。

【问题讨论】:

  • 呵呵,这就是早期开源的不幸风险。对于那个很抱歉。我没有遇到过这样的事情,至少最近是这样。我希望尽快发布一个项目,所以我一定会在此之前深入了解!
  • 希望我可以添加更多内容,但我遇到了同样的问题!可能是时候深入研究代码了...
  • 我一直在尝试使用样板 afnetworking 上传代码,但出现错误 400,似乎是分段上传中的文件设置不完全正确
  • 在考虑了其他解决方案后,我回到了这个。有没有人找到解决这个问题的方法?
  • 我在直接使用 AFNetworking 时遇到了同样的问题:我的服务器正在生成一个上传 URL 以及一些参数,我将这些参数传递给 AFNetworking 以进行 POST。对于小型甚至中型文件,一切都很好。对于较大的文件,它有时会起作用,但通常会按照您的描述进行。我尝试增加超时,但这只会使失败花费更长的时间。

标签: ios amazon-s3 afnetworking


【解决方案1】:

在为同样的问题苦苦挣扎并进行了一些研究之后,我找到了一个似乎运作良好的解决方案。

下载适用于 iOS 的 Amazon AWS 开发工具包并将其添加到您的项目中:

http://aws.amazon.com/sdkforios/

然后,使用自定义 NSOperation 类实现上传测试,如下所述:

Using delegates, operations, and queues

AmazonServiceRequestDelegate 协议是获取进度更新的关键,其方式与 AFNetworking 所做的类似。

特别是这个方法是我需要的:

-(void)request:(AmazonServiceRequest *)request didSendData:(NSInteger)bytesWritten
    totalBytesWritten:(NSInteger)totalBytesWritten
    totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite;

【讨论】:

  • 这个库不支持 OSX,所以我希望用我也遇到的 AFAmazonS3Client 解决这个问题。
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 2017-11-21
  • 1970-01-01
  • 2011-11-22
  • 2015-04-11
相关资源
最近更新 更多