PCLZIP是一个很棒的图书馆,但遗憾的是它的文档很少。 我正在使用它以支持ZipArchive被禁用的服务器(或不支持php版本)
我有一个功能可以将上传的文件(逐个)添加到ZIP存档中。 如果存档不存在,则会创建一个存档,如果存档存在,则只添加新文件。
我遇到的问题是添加TXT文件的功能,该功能基于存档中的注释。 (该函数读取先前准备的注释,并应从字符串创建TXT文件并插入存档。)
我似乎无法从字符串中找到OVERWRITE文件的函数(或者我不知道如何使用它)。
我可以使用PCLZIP_ATT_FILE_NAME
创建它,但不知何故,当我运行该函数时,每次将文件添加到存档时,它都会创建一个新的.txt
文件(具有相同的文件名!)(与现有的OVERWRITE相反
我试图使用PCLZIP_ATT_FILE_NEW_FULL_NAME
- 但是我找不到在哪里给它覆盖需要覆盖的WHICH文件的参数..
功能在这里:(对不起,如果它很长......)
$archive = new PclZip($zipname);
if (!file_exists($zipname)){ //The Archive already exists - let´s just ADD new files.
$comment = $comment_head . $comment_add ;
$string_content = $comment;
$v_list = $archive->create($file,
PCLZIP_OPT_ADD_PATH, $sitename,
PCLZIP_OPT_COMMENT, $comment,
PCLZIP_OPT_REMOVE_ALL_PATH);
$prop = $archive->properties();
$prop = $prop['comment'];
if (!$prop) {$prop = $comment;}
$list = $archive->add(array(
array(
PCLZIP_ATT_FILE_NAME => $string_file,
PCLZIP_ATT_FILE_CONTENT => $prop,
PCLZIP_ATT_FILE_NEW_FULL_NAME => $string_file
)
)
);
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
} else {
// No Archive already exists - Create with new file .
$comment_add = $meta['file'] . PHP_EOL . PHP_EOL ;/*.$comment_foot*/ ;
$b_list = $archive->add($file,
PCLZIP_OPT_ADD_PATH, $sitename,
PCLZIP_OPT_ADD_COMMENT, $comment_add,
PCLZIP_OPT_REMOVE_ALL_PATH);
$prop = $archive->properties();
$prop = $prop['comment'];
if (!$prop) {$prop = $comment;}
$list_6 = $archive->add(array(
array( PCLZIP_ATT_FILE_NAME => $string_file,
PCLZIP_ATT_FILE_CONTENT => $prop
)
)
);
if ($b_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
}
所以 - 任何人都知道如何用PCLzip覆盖文件中的文件(而不是文件..)
答案 0 :(得分:0)
$archive = new PclZip("archive.zip");
$v_filename = "new_file.txt";
$v_content = "This is the content of file one\nHello second line";
$list = $archive->create(array(
array( PCLZIP_ATT_FILE_NAME => $v_filename,
PCLZIP_ATT_FILE_CONTENT => $v_content
)
)
);
if ($list == 0) {
die("ERROR : '".$archive->errorInfo(true)."'");
}