0

嗨,我会检测到我的文件下载结束。该文件由 php 方法生成。

我在 js 中尝试了 3 种方法: - 两种下载文件 - 一种检测 php 脚本的结尾

1

function downloadTcReport(e, flag) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
window.location.href = "Phpz/download_tc.php?method=download_tc_report";

}

2

function downloadURL(url) {
var hiddenIFrameID = 'hiddenDownloader',
        iframe = document.getElementById(hiddenIFrameID);
if (iframe === null) {
    iframe = document.createElement('iframe');
    iframe.id = hiddenIFrameID;
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
}
iframe.src = url;

}

3

jQuery(e).load("Phpz/download_tc.php?method=download_tc_all_current_cl", function() {

            alert("Win !!!");
        });

和我的 php 代码的一部分

if (@$_GET['method'] == 'download_tc_report') {
        $obj = new downloadTC();
        $content = $obj->get_last_report();
        header("Content-Type: application/octet-stream");
        header("Content-Length: " . strlen($content));
        header("Content-Disposition: attachment; filename=\"tc_report.csv\"");
        echo $content;
    }

使用代码 #1 和 #2 我可以正确下载文件而不更改位置,但我无法检测到文件生成的结束

使用代码#3,我检测到结尾,但将文件的字符串内容放在函数的“e”元素中。如果没有元素,则什么都没有。

所以我需要下载一个尚未生成的文件,并检测文件何时发送(使用示例:用户点击一个按钮,生成完成后出现加载div)有人有想法帮忙我?

谢谢

编辑 :

function downloadURL(url) {

jQuery.ajax({
    type: "GET",
    url: url,
    beforeSend: function() {
        console.log("Begin");
    },
    success: function() {
        console.log("End");
    }
    ,
    error: function() {

    }
});

这个功能也不起作用。检测结尾和开头但不打开下载(比如当你下载一个 excel 文件时,它会询问你是否想用 Office 打开它......赢了)

4

0 回答 0