Как избежать создания zip-файлов в php с папками внутри? - PullRequest
0 голосов
/ 08 апреля 2020

У меня следующая проблема: на моем сайте люди могут скачивать zip-файлы с изображениями внутри. В зависимости от изображений они находятся в том или ином каталоге. Загрузка осуществляется через ajax вызов файла php, который возвращает этот zip-файл. Проблема в том, что zip-файл копирует структуру папок, имеющуюся у меня локально, так что внутри zip-файла есть несколько папок, пока я не доберусь до файлов. Я хотел бы знать, как поместить все файлы в одну папку, чтобы при открытии почтового индекса вы видели изображения.

Это мой ajax звонок:

$.ajax({
        type: "POST",
        url: "download.php",
        data: {
            'imagenes': imagenes,
            'nombreZip': nombreZip
            },
        success: function(data){
            window.location = data;
            $('#fondoDescarga').fadeOut();
        }
    });

Где "imagenes" - это массив с файлами, включая root, что-то вроде:

0: "contenido / all / MyFolder / Image.tif" 1: "contenido / all / MyFolder / Image2 .tif "2:" contenido / all / MyFolder / Image3.tif "

И это файл php, который генерирует zip:

<?php  
$error = ""; //error holder  
$post = $_POST;    
if(extension_loaded('zip'))  {
// Checking ZIP extension is available  
    // Checking files are selected  
    $zip = new ZipArchive(); // Load zip library   
    $zip_name = $_POST['nombreZip'].".zip";           // Zip name  
    if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE) {   
            // Opening zip file to load files  
            $error .= "* Sorry ZIP creation failed at this time";  
    }  
    foreach($post['imagenes'] as $file)  {   
            $zip->addFile($file);
    }  
    $zip->close(); 
    echo $zip_name;
} else {  
    $error .= "* You dont have ZIP extension";  
}  

?>

Это довольно просто, и это работает, но это немного раздражает, заставляя пользователя просматривать так много папок.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...