ios&;s3:使用url从s3下载图像

ios&;s3:使用url从s3下载图像,ios,amazon-s3,Ios,Amazon S3,是否可以在iOS中使用url从s3下载图像,这样我就不必使用S3SDK 使用url和NSURLConnection.sendAsynchronousRequest下载图像更方便,因为我直接获取url 我试图这样做,但总是得到超时错误 如果我将url切换到不在s3中的其他web图像,我可以成功下载该图像 可以直接使用url在web上查看s3图像 代码: 我收到“图像下载错误:请求超时。”您好,这是一个很好的问题 是的,不使用s3库也可以保存图像 我可以使用ASIHTTPRequest提供我的解决方

是否可以在iOS中使用url从s3下载图像,这样我就不必使用S3SDK

使用url和NSURLConnection.sendAsynchronousRequest下载图像更方便,因为我直接获取url

我试图这样做,但总是得到超时错误

如果我将url切换到不在s3中的其他web图像,我可以成功下载该图像

可以直接使用url在web上查看s3图像

代码:


我收到“图像下载错误:请求超时。”

您好,这是一个很好的问题

是的,不使用s3库也可以保存图像

我可以使用
ASIHTTPRequest
提供我的解决方案

- (ASIHTTPRequest *)newHttpRequest
{
    NSString *path = [MEDispatcher sharedInstance].profileData.picture;
    NSURL *url = [[NSURL alloc] initWithString:path];

    ASIHTTPRequest *result = [[ASIHTTPRequest alloc] initWithURL:url];
    [result setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];

    [url release];
    result.timeOutSeconds = MERequestTimeoutInterval;

    return result;
}
它是一个从url获取图像数据的请求。作为回应,我分析了所有关于图像的信息。

我发现,如果我在url中将“https”改为“http”,它就会工作。 所以我只是这样做:

var urlString = self.thumbnailImageURL
urlString = urlString.stringByReplacingCharactersInRange(
                Range<String.Index>(start: urlString.startIndex,end:advance(urlString.startIndex, 5)), withString: "http")
var urlString=self.thumbnailImageURL
urlString=urlString.StringByReplacingCharactersRange(
范围(开始:urlString.startIndex,结束:advance(urlString.startIndex,5)),带有字符串:“http”)

确保S3上的图像设置为公共。

嗨,Oleg,你能看看我的代码吗?我不知道为什么它不适用于s3,但它可以从其他url下载图像。从s3下载图像需要多长时间?非常感谢。我的朋友,你可能需要为超过90秒的NSURLRequest设置timeoutInterval。还要检查你在amazon s3中的bucket权限。我可以通过浏览器中的url查看图像。这是否意味着可以在ios应用程序中下载图像?对我来说,下载图像就足够了。你能提供你使用的Url吗。NSURL*Url=[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];试试这个来设置url。完美。。。您不需要安装S3SDK。上面的答案就可以了。谢谢。。它节省了很多时间。。。
var urlString = self.thumbnailImageURL
urlString = urlString.stringByReplacingCharactersInRange(
                Range<String.Index>(start: urlString.startIndex,end:advance(urlString.startIndex, 5)), withString: "http")
- (void)downloadImageWithURL:(NSURL *)url completionBlock:(void (^)(BOOL succeeded, UIImage *image))completionBlock
{
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [NSURLConnection sendAsynchronousRequest:request
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                               if ( !error )
                               {
                                    UIImage *image = [[UIImage alloc] initWithData:data];
                                    completionBlock(YES,image);
                                } else{
                                    completionBlock(NO,nil);
                                }
                           }];
}