通过asihttprequest解压缩下载的文件

时间:2012-07-12 06:38:17

标签: iphone objective-c ios asihttprequest unzip

我想知道是否使用ASIHTTPRequest我们可以解压缩.zip下载的文件,或者它只能 解压缩.gzip压缩文件。

请告诉我,因为如果ASIHTTPRequest无法解压缩.zip压缩文件,那么我将不得不使用ZipArchive这样的第三方API来解压缩下载的文件。

由于

1 个答案:

答案 0 :(得分:0)

为什么不使用gzip压缩的HTTP通信,它将由ASI(以及几乎所有其他HTTP访问框架)为您透明地解码。

ASIHTTP支持解压缩,例如 -

- (IBAction)grabURL:(id)sender
{
    NSURL *url              = [NSURL URLWithString:@"http://allseeing-i.com"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

    // YES is the default, you can turn off gzip compression by setting this to NO
    [request setAllowCompressedResponse:YES];

    [request startSynchronous];
    BOOL *dataWasCompressed    = [request isResponseCompressed]; // Was the response gzip compressed?
    NSData *compressedResponse = [request rawResponseData]; // Compressed data
    NSData *uncompressedData   = [request responseData]; // Uncompressed data
    NSString *response         = [request responseString]; // Uncompressed data as a string
}

更新:如果asi不支持zip文件解压缩,那么我过去曾使用ZipArchive成功。

它非常轻巧,使用简单,支持密码保护,ZIP内的多个文件,以及压缩和放大解压缩。所以你需要首先通过asi获取zip文件然后解压缩使用ziparchive。

基本用法是:

NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"zip"];
ZipArchive *zipArchive = [[ZipArchive alloc] init];
[zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"];
[zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES];
[zipArchive UnzipCloseFile];
[zipArchive release];