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