首页 > 解决方案 > 如何避免在 php 中生成带有文件夹的 zip 文件?

问题描述

我有以下问题:在我的网站上,人们可以下载带有图片的 zip 文件。根据图像,它们位于一个目录或另一个目录中。下载是通过对返回此 zip 文件的 php 文件的 ajax 调用进行的。问题是 zip 文件复制了我在本地拥有的文件夹结构,因此在 zip 内部有几个文件夹,直到我到达文件。我想知道如何将所有文件放在一个文件夹中,这样当您打开 zip 时,您会看到图像。

这是我的ajax调用:

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

其中“imagenes”是一个包含文件的数组,包括根目录,例如:

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

这是生成 zip 的 php 文件:

<?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";  
}  

?>

它非常简单并且有效,但是强迫用户浏览这么多文件夹有点烦人。

谢谢 !

标签: javascriptphpjqueryajaxzip

解决方案


推荐阅读