我正在尝试使用以下类用php创建zip档案:Site
第一个问题:
在CCD_ 1的阵列中。我需要在所有日期中添加应用程序的路径,我该怎么做?
转换此数组:
$files_to_zip = array(
'preload-images/1.jpg',
'preload-images/2.jpg',
'preload-images/5.jpg',
'kwicks/ringo.gif',
'rod.jpg',
'reddit.gif'
);
对此:
$files_to_zip = array(
'path/to/app/preload-images/1.jpg',
'path/to/app/preload-images/2.jpg',
'path/to/app/preload-images/5.jpg',
'path/to/app/kwicks/ringo.gif',
'path/to/app/rod.jpg',
'path/to/app/reddit.gif'
);
第二个问题:
当创建ZIP时,他们会创建归档路径的每个文件夹。示例:ZIP>文件夹"路径">文件夹"到">文件夹"app">档案。
我只想要ZIP中的档案。
我不知道在哪里更改代码,也不知道哪里出了问题。请帮忙?
这是的第一个问题解决方案
$files_to_zip = array(
'preload-images/1.jpg',
'preload-images/2.jpg',
'preload-images/5.jpg',
'kwicks/ringo.gif',
'rod.jpg',
'reddit.gif'
);
$dir = 'c:/xampp/htdocs/test/';
$new_files = array();
foreach($files_to_zip as $value){
$new_files[] = $dir.$value;
}
print_r($new_files);
对于第二个问题,您可以使用PCLZIP。
require_once('pclzip.lib.php');
// Create Object
$archive = new PclZip("compressed.zip");
/*
$compress = $archive->add($p_filelist, $p_option, $p_option_value, ...);
$files_archive = $archive->add($new_files, PCLZIP_OPT_REMOVE_PATH, $dir, PCLZIP_OPT_ADD_PATH, 'myFiles');
Here,
$new_files = Array of files
PCLZIP_OPT_REMOVE_PATH = http://www.phpconcept.net/pclzip/user-guide/29
PCLZIP_OPT_ADD_PATH = http://www.phpconcept.net/pclzip/user-guide/28
*/
$files_archive = $archive->add($new_files, PCLZIP_OPT_REMOVE_PATH, $dir, PCLZIP_OPT_ADD_PATH, 'myFiles');
if ($files_archive == 0) {
die("Error : ".$archive->errorInfo(true));
}
else{
echo "Archive Created";
}
所以,总的来说,你的代码看起来是这样的:
<?php
require_once('pclzip.lib.php');
$files_to_zip = array(
'preload-images/1.jpg',
'preload-images/2.jpg',
'preload-images/5.jpg',
'kwicks/ringo.gif',
'rod.jpg',
'reddit.gif'
);
$dir = 'c:/xampp/htdocs/test/';
$new_files = array();
foreach($files_to_zip as $value){
$new_files[] = $dir.$value;
}
print_r($new_files);
// Create Object
$archive = new PclZip("compressed.zip");
/*
$compress = $archive->add($p_filelist, $p_option, $p_option_value, ...);
$files_archive = $archive->add($new_files, PCLZIP_OPT_REMOVE_PATH, $dir, PCLZIP_OPT_ADD_PATH, 'myFiles');
Here,
$new_files = Array of files
PCLZIP_OPT_REMOVE_PATH = http://www.phpconcept.net/pclzip/user-guide/29
PCLZIP_OPT_ADD_PATH = http://www.phpconcept.net/pclzip/user-guide/28
*/
$files_archive = $archive->add($new_files, PCLZIP_OPT_REMOVE_PATH, $dir, PCLZIP_OPT_ADD_PATH, 'myFiles');
if ($files_archive == 0) {
die("Error : ".$archive->errorInfo(true));
}
else{
echo "Archive Created";
}
第一个问题解决方案
foreach($files_to_zip as &$value){
$value = 'path/to/app/'.$value
}
或使用array_walk
第二个问题:
尝试创建tmp文件夹,将每个文件都复制到其中并压缩em。
这是最简单的解决方案
不要忘记删除tmp文件。