Ajax Zip文件下载 - WordPress Guru.



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

此自定义 JS 将数据传递给img_zipimg_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>

定制.js

$('.select-and-download').click(function () {
params = [];
postid = $(this).data('postid');
keyword  = $(this).data('keyword');
type = $(this).data('type');
resort = $(this).data('resort');
resort_name = $(this).data('resortname');

let selectedValues = getValueUsingClass();
data = {
action: 'img_zip',
resort_name : resort_name,
postid: postid,
selectedValues: selectedValues,
keyword: keyword,
type: type,
};
$.ajax({
url: ajaxurl,
type: 'POST',
data: data,
success: function (response) {
console.log(response);
},
});
});
});

功能.php

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();

最新更新