PHP - PCLZIP agregando archivo desde una cadena
Frecuentes
Visto 3,032 equipos
2
PCLZIP es una gran biblioteca, pero desafortunadamente está mal documentada. Lo estoy usando para admitir también servidores donde ZipArchive está deshabilitado (o la versión php no es compatible)
Tengo una función para agregar archivos cargados (uno por uno) a un archivo ZIP. Si el archivo no existe, crea uno, si el archivo existe, simplemente agrega los nuevos archivos.
El problema que tengo es con una función que agrega un archivo TXT, que se basa en los comentarios del archivo. (la función lee los comentarios que se prepararon previamente y debe crear un archivo TXT a partir de una cadena e insertarlo en el archivo).
Parece que no puedo encontrar una función para SOBREESCRIBIR un archivo desde una cadena (o no sé cómo usarlo).
Puedo crearlo con PCLZIP_ATT_FILE_NAME
, pero de alguna manera, cuando ejecuto la función, crea una nueva .txt
archivo (¡con el mismo nombre de archivo!) cada vez que agrega un archivo al archivo (en lugar de SOBREESCRIBIR el existente) traté de usar PCLZIP_ATT_FILE_NEW_FULL_NAME
- pero no puedo encontrar dónde darle los parámetros a QUÉ archivo necesita sobrescribir ...
La función está aquí: (perdón si es larga...)
$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));
}
}
Entonces, ¿alguien sabe cómo SOBREESCRIBIR un archivo desde una cadena (y no desde un archivo ...) con PCLzip?
1 Respuestas
1
$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)."'");
}
Respondido 06 Oct 13, 22:10
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php zip pclzip or haz tu propia pregunta.