我有一个iOS应用程序,可以在那里上传图像并在新闻推送中查看。目前,我正在使用Azure的存储系统,对我来说,使用共享访问签名注册并下载Blob是没有问题的。但我不想每次都下载它们,相反,我想有一个可以显示的网址。我所做的是:
AZSCloudBlobContainer *blobContainer = [[AZSCloudBlobContainer alloc] initWithUrl:[NSURL URLWithString:@"SASURL"]];
AZSCloudBlockBlob *blockBlob = [blobContainer blockBlobReferenceFromName:@"bla"];
[blockBlob downloadToDataWithCompletionHandler:^(NSError *error, NSData *data) {
if (error) {
NSLog(@"Error in downloading blob");
}
else{
UIImage *image = [[UIImage alloc]initWithData:data];
}
}];
我想做的是:
NSURL *url = [NSURL URLWithString:@"SASURL"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data cache:YES];
基本上,我只需要一个能在浏览器中显示图像的sasurl。或者换句话说,我每次都必须下载Blob,我希望有类似bloburl+sas的东西可以直接访问它们,而无需下载它们。也许这是不可能的,这就是我问的原因?
您不能限制谁可以使用基于SAS的blob URI。然而:私有blob URI,除非共享,否则其他人无法发现(除非纯属巧合)。
为了限制暴露,您可以在URI链接上设置一个短时间限制(例如,10分钟)。在这一点上,即使链接被破坏,暴露窗口也会很小。
SAS生成几乎是微不足道的,因此您应该能够从应用程序的服务层