下载文件时禁用弹出窗口

时间:2014-09-26 15:29:26

标签: javascript php jquery wordpress

我正在创建一个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)家长下载页面应在此过程中保持开放

寻找有关此问题的专家建议。

由于

1 个答案:

答案 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;