2014-07-08 25 views
1

试图从kml文件创建kmz文件。剧本上周工作,但不知何故停止工作。我试图通过创建一个包含.kml文件的.zip文件来解决此问题。来自文件的PHP zip

的过程如下 1. KML文件被创建 2. .zip文件添加的 3. KML文件被添加根据名称 4.的.zip保存

的问题是到拉链当我打开目录时,.zip包含的内容看起来像.kml文件的文件结构,而不仅仅是文件。

例如,如果.kml在c:/ foldera/folderb中。该zip文件将包含c:/ foldera/folderb/kml。

$zip = new ZipArchive(); 
$zip_name = $_SERVER['DOCUMENT_ROOT'] .'/assets/kml'. "/r".$r.".zip"; 
$filename = $_SERVER['DOCUMENT_ROOT'] .'/assets/kml'. "/r".$r.".kml"; 
$zip->open($zip_name, ZIPARCHIVE::CREATE); 
$zip->addFile($filename); 
$zip->close(); 
unlink($_SERVER['DOCUMENT_ROOT'] .'/assets/kml'. "/r".$r.".kml"); 

回答

2

出于某种原因,你有两个addfile的:

$zip->addFile($filename, ltrim($filename, '/')); 
$zip->addFile($filename); 

尝试用这种替代这两条线:

$zip->addFile($filename, basename($filename)); 

basename()只返回文件名,去掉路径 - http://www.php.net/manual/en/function.basename.php

+0

我以为我曾试过。但我猜想有些事是不正确的.... – user3032973