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个字节。
答案 0 :(得分:0)
我打赌(1)urlData
为零,因此没有任何内容可写,或者(2)urlData
不是压缩数据并且解压缩它失败。有可能第一个是实际问题,因为你说你没有看到任何书面文件。