我正在创建一个wordpress页面,允许用户在5秒后下载一个zip文件。在其中,我调用第二页并传递POST参数(zip id :: to fetch zip path)。该页面被调用但始终作为弹出窗口。我正在寻找干净的下载选项,无需打开标签或新窗口,下载开始。 Bypasses popup - blockers也。
我尝试了两种方法
A)方法1(Jquery Post)
$.post(
"<?php echo get_permalink(get_page_by_title('Download Page')); ?>",
{attachment_path: "<?php echo $attachment[0]->ID ; ?>"
}
B)方法2(提交表格)
$( '<form action="" method="post" target="_parent" class="hide">
<input type="hidden" name="attachment_path" value="<?php echo $attachment[0]->ID ; ?>" />
<input type="submit" name="submit" value="submit" id="target-counter-button"/>
</form>'
).submit();
修改
1)寻找POST方法来实现逻辑
2)由于服务器限制,直接访问* .php文件和* .zip文件已被阻止
3)家长下载页面应在此过程中保持开放
寻找有关此问题的专家建议。
由于
答案 0 :(得分:1)
您可以通过重定向到php脚本的路径来实现这一点,如何使用正确的HTTP标头输出所需文件。
Javascript Part:
5秒后重定向到&#39; zipfetcher&#39;带有zip id的脚本
<script>
function download(id) {
setTimeout(function () {
document.location = "zipfetcher.php?fileid="+id; // The path of the file to download
}, 5000); // Wait Time in milli seconds
}
</script>
<a href="#" onclick="download('123');return false;">Click to download in 5 sec!</a> // Call of the download function when clicked
PHP部分:(又名zipfetcher.php)
根据zipid找到zip路径然后使用readfile将其输出到浏览器并使用正确的标题
// Fetch the file path according to $_GET['fileid'] who's been sent by the download javascript function etc.
// ....
header('Content-Description: File Transfer');
header('Content-Type: application/zip, application/octet-stream'); // Puting the right content type in this case application/zip, application/octet-stream
header('Content-Disposition: attachment; filename='.basename($filepath));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filepath));
readfile($filepath);
exit;