嗨,我会检测到我的文件下载结束。该文件由 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 打开它......赢了)