如何找到我尝试使用ZipArchive解压缩的文件?

时间:2014-03-21 18:35:52

标签: objective-c ios7 unzip ziparchive dispatch-async

ZipArchive无法找到我尝试解压缩的文件。我究竟做错了什么?我想在dispatch_async中做所有这些,这是我的问题吗?

我最终得到“找不到zip文件”。在我的日志中。当我查看应该在我的应用程序数据文件中创建的目录时,无处可寻。那个zip文件怎么样。

以下是tutorial的链接,与我正在尝试的内容非常相似。我还添加了所需的库。

代码编辑每个请求包含错误处理:

    NSLog(@"Got the data!");
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [paths  objectAtIndex:0];

    //Save the data
    NSLog(@"Saving");
    NSString *dataPath = [path stringByAppendingPathComponent:@"TKAPlacesImages.zip"];
    dataPath = [dataPath stringByStandardizingPath];

    NSError *error = nil;
    [urlData writeToFile:dataPath options:0 error:&error];

    if(!error)
    {

        if (![defaults objectForKey:@"places images path"]) {
            [defaults setObject:path forKey:@"places images path"];

            [defaults synchronize];
        }

        ZipArchive* za = [[ZipArchive alloc] init];
        if( [za UnzipOpenFile:dataPath] )
        {
            BOOL ret = [za UnzipFileTo:path overWrite: YES];
            if (NO == ret){} [za UnzipCloseFile];

            NSLog(@"Successful unzip of: %@",@"/Library/Caches/TKAPlacesImages.zip");
        }
        else
        {



            NSLog(@"Could not find zip file.");

        }
    }
    else
    {
        NSLog(@"Error saving file %@",error);
    }

添加了PHP代码

function zip_image_files($images) {

    // Prepare File
    $file = tempnam("tmp", "zip");
    $zip = new ZipArchive();
    $zip->open($file, ZipArchive::OVERWRITE);

    $imagesCount = count($images);
    $imagesString = '';

    for($i=0; $i < $imagesCount; $i++)
    {
        // Stuff with content
        $imagesString = ".." . $images[$i];

        if(file_exists($imagesString))
        {
            $zip->addFile($imagesString);
        }
        else
        {
            echo $imagesString;
        }

    }//end for

    // Close and send to users
    $zip->close();
    header('Content-Type: application/zip');
    header('Content-Length: ' . filesize($file));
    header('Content-Disposition: attachment; filename="file.zip"');
    readfile($file);
    unlink($file); 

}
//end function

修改 我的函数返回一个19.2MB的zip文件。但是在我的app数据文件中,zip文件是0个字节。

1 个答案:

答案 0 :(得分:0)

我打赌(1)urlData为零,因此没有任何内容可写,或者(2)urlData不是压缩数据并且解压缩它失败。有可能第一个是实际问题,因为你说你没有看到任何书面文件。