PHP - renombrar archivos zip, despues de descargarlo

 
Vista:
sin imagen de perfil

renombrar archivos zip, despues de descargarlo

Publicado por Antonio (2 intervenciones) el 30/12/2019 17:35:56
Buenos dias estoy intentando renombrar una carpeta de un zip despues de descargarlo, es decir, al descargar el zip me queda una ruta muy larga y quisiera acortar la ruta, por tanto lo estoy tratando de hacer con rename(), pero no se donde ubicarlo, no se si al inicio de la busqueda cuando junta los archivos para el zip o en la cabecera del zip. les dejo el codigo por si alquien me puede echar la mano con eso. Saludos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//-----------------------------
foreach($objBusqueda as $obj){ //se le asigna a la variable objbusqueda el valor de la variable obj
    $folder = "evalsoil/dibujo/".$obj->id_folio;
    $destino = "/".$obj->id_folio;   //----- seria LA ruta NUEVA MAS CORTA;
 
    if (file_exists($folder)){
        $archivo = $folder."/".$obj->id_folio.".pdf";  //------ ruta larga
 
 
        if (!file_exists($archivo))exit("Archivo no existente");
            array_push($archivos, $archivo); //insertamos uno o mas elementos al final del array
 
 
    }
}
 
    rename("$archivo" , "$destino");
 
//-se manda el array con los archivos si al menos existe un archivo
if(count($archivos)> 0)
    download($archivos);
 
?>
 
 
<?php
 
//** se crea una funcion para crear el zip, con los archivos que contendra el array
function createZip($files = array(), $destination = '', $overwrite = false) {
 
    if(file_exists($destination) && !$overwrite) { return false; }
    //se da validacion del archivo
    $validFiles = [];
    if(is_array($files)) { //si es un array que contiene la variable files se itera nuevamente y se le asigna el valor
    foreach($files as $file) {
        if(file_exists($file)) {
            $validFiles[] = $file;
        }
    }
    }
    //contamos elementos de validacion
    if(count($validFiles)) {
    $zip = new ZipArchive();
    if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
        return false;
    }
    //recorremos los elementos de la validFelis y le asignamos  el valor $file
    foreach($validFiles as $file) {
        $zip->addFile($file,$file);
    }
 
    //se cierra el zip y comprobamos que existe el archivo
    $zip->close();
    return file_exists($destination);
    }
    else{
        return false;
        }
}
 
//- se crea la funcion para la descarga del archivo pdf
function download($archivos){
    //** se manda llamar la funcion creazip, enviando un nombre para el archivo zip y el array con la url de los archivos
    $fileName = 'Consulta_'.date('Ymd-His') . '.zip'; //nombre del archivo con la fecha
    $files_to_zip = $archivos;
 
    $result = createZip($files_to_zip, $fileName);
    header('Content-Description: File Transfer'); // ver cabecera en php http s://w w w.php.net/manual/es/function.header.php
    header('Content-Type: application/octet-stream');//flujo de info http s://w ww.php.net/manual/en/function.readfile.php
    header("Content-Disposition: attachment; filename=\"".$fileName."\"");
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header("Content-Length: ".filesize($fileName));
    ob_clean();
    flush();
    readfile($fileName);
    @unlink($fileName);
}
 
 
 
 
 
//- se crea la funcion que realiza la busqueda de (sap) mediante la conexion y se extrae el n° de Folio en la consulta
function buscar( $conexion, $id ){
 
    //** se crea un arreglo con los ids ingresados en el array separados por coma
    $ids_array = explode(",", $id); //divide la cadena (string) y lo guarda en un array original usando el delimitador(,)
    $ids_array = array_map('trim', $ids_array); // Se llama al array y se eliminan espacios entre ids del input
    $swhere= "";
    if(is_numeric($ids_array[0]))
        $swhere="id_folio='" .$ids_array[0] ."'";
    else
        $swhere="sap='" .$ids_array[0] ."'";
 
    //** si existe mas de un folio entonces lo agregamos al WHERE de la consulta
    if(count($ids_array) > 1){
            //** pero por cada id separado, creamos un where omitiendo el primero
            for($i=1; $i< count($ids_array); $i++)
            {
                if(is_numeric($ids_array[$i]))
                    $swhere .= " or id_folio='".$ids_array[$i]."'";
                else
                    $swhere .= " or sap='".$ids_array[$i]."'";
            }
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder