来自以 .zip 结尾的 URL 的图像

问题描述

我得到了一个 URL,我需要从中提取图像。图片为 PNG,但 URL 如下所示:

http://something.../something.zip

如果我在 safari 中打开这个 URL,它会自动下载一个 PNG。但是,当我尝试加载我的程序时,我得到了一个 nil UIImage 对象。

我的代码

- (void)fetchImageFromURL: (Nsstring *)urlString {
    NSURL *url        = [NSURL URLWithString:urlString];
    
    NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data,NSURLResponse * _Nullable response,NSError * _Nullable error) {
        if (error) {
            NSLog(@"%@",error.localizedDescription);
            
        } else {
            if (data) {
                UIImage *image = [UIImage imageWithData: data];
                if (image) {
                    [self.randomImageImageView setimage: image];
                } else {
                    NSLog(@"Image is nil.");
                }
            } else {
                NSLog(@"Could not retrieve data.");
            }
        }
    }];
    [task resume];
}

解决方法

这是因为 Safari 会自动解压缩小于特定大小的 zip 文件。这意味着您需要先以编程方式解压缩文件,然后从那里找到您的图像。