PCLZIPは優れたライブラリですが、残念ながら文書化が不十分です。ZipArchiveが無効になっている(またはphpバージョンがサポートされていない)サーバーもサポートするために使用しています
アップロードしたファイルを1つずつZIPアーカイブに追加する機能があります。アーカイブが存在しない場合はアーカイブを作成し、アーカイブが存在する場合は新しいファイルを追加するだけです。
私が抱えている問題は、アーカイブからのコメントに基づいたTXTファイルを追加する機能にあります。(この関数は、以前に準備されたコメントを読み取り、文字列からTXTファイルを作成し、アーカイブに挿入する必要があります。)
文字列からファイルを上書きする関数が見つからないようです(または使用方法がわかりません)。
で作成できます PCLZIP_ATT_FILE_NAME
が、どういうわけか、関数を実行する.txt
と、アーカイブにファイルを追加するたびに(既存のファイルを上書きするのではなく)新しいファイル(同じファイル名で!)が作成されます-使用しようとしましたPCLZIP_ATT_FILE_NEW_FULL_NAME
-しかし、上書きする必要のあるファイルのパラメータをどこに指定するかがわかりません。
関数はここにあります:(長い場合は申し訳ありません..)
$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を使用して(ファイルからではなく)文字列からファイルを上書きする方法を知っている人はいますか?