Php Ajax Zip文件下载-WordPress专家

Php Ajax Zip文件下载-WordPress专家,php,wordpress,Php,Wordpress,在这里,我无法下载任何Zip文件。这段代码也在创建Zip,但我无法下载。任何知道WordPress/PHP大师的人,请帮帮我 此自定义JS将数据传递给img_zip,并且img_zip()函数可以使用图像及其度假胜地名称调用zipDownload函数。zipDownload()也有一个图像数组和度假村名称,但我认为Zip也被创建了。在响应时,我无法下载Zip文件。请引导我 .php <button type="button" class="cart-detail select-and-do

在这里,我无法下载任何Zip文件。这段代码也在创建Zip,但我无法下载。任何知道WordPress/PHP大师的人,请帮帮我

此自定义JS将数据传递给
img_zip
,并且
img_zip()
函数可以使用图像及其度假胜地名称调用
zipDownload
函数。
zipDownload()
也有一个图像数组和度假村名称,但我认为Zip也被创建了。在响应时,我无法下载Zip文件。请引导我

.php

<button type="button" class="cart-detail select-and-download" data-resortname ="<?php echo $resort_title ?>" data-type="<?php echo $resort_type ?>" data-postid="<?php echo get_the_ID() ?>" data-keyword="<?php echo $resort_data[$keyword_field] ?>"  data-toggle="collapse" aria-expanded="false" aria-controls="collapseExample" >
     Download
</button>
function img_zip() {
  $resort_name = $_REQUEST['resort_name']; 
  $images = $_POST['selectedValues']; 

  zipDownload($images,$resort_name); 
}

function zipDownload($files, $resort_name)

    {
// var_dump($files);      // all images in array
// var_dump($resort_name); // resort name

    ini_set('memory_limit','20048M');
    $zip = new ZipArchive;
    $zipName = $resort_name.'_'.date("d_m_Y").'_'.get_current_user_id().'.zip';
    $filename = get_template_directory().'/downloads/'.$zipName;
    // die($filename);
    if ($zip->open($filename, ZipArchive::CREATE) === TRUE)
    {
        foreach ($files as $file) {
            // echo $file; //here i am get image url

            $zip->addFromString(basename($file),file_get_contents($file, FILE_USE_INCLUDE_PATH));
        }
        $zip->close();
    }
    header("Content-type: application/zip");
    header("Content-Disposition: attachment; filename=" . $zipName);
    header("Pragma: no-cache");
    header("Expires: 0");
    readfile($filename);
    unlink($filename);
    echo $filename;

}
Function.php

<button type="button" class="cart-detail select-and-download" data-resortname ="<?php echo $resort_title ?>" data-type="<?php echo $resort_type ?>" data-postid="<?php echo get_the_ID() ?>" data-keyword="<?php echo $resort_data[$keyword_field] ?>"  data-toggle="collapse" aria-expanded="false" aria-controls="collapseExample" >
     Download
</button>
function img_zip() {
  $resort_name = $_REQUEST['resort_name']; 
  $images = $_POST['selectedValues']; 

  zipDownload($images,$resort_name); 
}

function zipDownload($files, $resort_name)

    {
// var_dump($files);      // all images in array
// var_dump($resort_name); // resort name

    ini_set('memory_limit','20048M');
    $zip = new ZipArchive;
    $zipName = $resort_name.'_'.date("d_m_Y").'_'.get_current_user_id().'.zip';
    $filename = get_template_directory().'/downloads/'.$zipName;
    // die($filename);
    if ($zip->open($filename, ZipArchive::CREATE) === TRUE)
    {
        foreach ($files as $file) {
            // echo $file; //here i am get image url

            $zip->addFromString(basename($file),file_get_contents($file, FILE_USE_INCLUDE_PATH));
        }
        $zip->close();
    }
    header("Content-type: application/zip");
    header("Content-Disposition: attachment; filename=" . $zipName);
    header("Pragma: no-cache");
    header("Expires: 0");
    readfile($filename);
    unlink($filename);
    echo $filename;

}

您不能使用ajax触发下载,但您可以归档您正在查找的内容,用以下内容替换您的。$ajax调用:

var downloadForm = $('<form method="post" action="' + ajaxurl + '">');
downloadForm.append('<input type="hidden" name="action" value="img_zip" />');
downloadForm.append('<input type="hidden" name="resort_name" value="' + resort_name + '" />');
downloadForm.append('<input type="hidden" name="postid" value="' + postid + '" />');
downloadForm.append('<input type="hidden" name="keyword" value="' + keyword + '" />');
downloadForm.append('<input type="hidden" name="type" value="' + type + '" />');
downloadForm.appendTo('body');
downloadForm.submit();
downloadForm.remove();
var downloadForm=$('');
downloadForm.append(“”);
downloadForm.append(“”);
downloadForm.append(“”);
downloadForm.append(“”);
downloadForm.append(“”);
下载表单。附加到(“正文”);
downloadForm.submit();
downloadForm.remove();

我认为您需要澄清一些事情-是否创建过ZIP文件夹?如果是,您能在服务器上确认吗?您是否检查过任何错误日志以查看是否有故障?PHP脚本是什么样子的?请不要在评论部分发布代码。。使用格式化块编辑您的问题在尝试读取文件并将其输出到浏览器之前,您可能应该检查文件是否已创建。永远不要只是假设……你是想通过Ajax下载zip吗?那不行。您应该创建zip,将url返回到文件,然后将用户重定向到该url。顺便说一句,函数
zipDownload()
是如何调用的?正如@Ice76已经指出的:不要在注释部分发布代码。它不可读。编辑您的问题以包含所有相关代码和信息。