是否下载了文件?

时间:2013-03-13 12:42:22

标签: php download

我编写了用PHP创建CSV文件的代码,并在本地下载。

是否可以知道用户是否已下载文件?或者如果用户取消了下载?

我的测试代码放在下面,用于创建和下载文件:

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=invoies.csv");
header("Pragma: no-cache");
header("Expires: 0");

$array = array(
    array("data11", "data12", "data13"),
    array("data21", "data22", "data23"),
    array("data31", "data32", "data23"),
);
outputCSV($exported_invoices_arr);


function outputCSV($data) {
    $outstream = fopen("php://output", "w");

    function __outputCSV(&$vals, $key, $filehandler) {
        fputcsv($filehandler, $vals); // add parameters if you want
    }

    array_walk($data, "__outputCSV", $outstream);
    fclose($outstream);
}

下载文件时是否有任何触发器或处理程序?

2 个答案:

答案 0 :(得分:0)

它不可能。没有直接的方法来捕捉。可能会有一些工作,但它并不完美。

答案 1 :(得分:0)

你永远不会知道。即使您检测到连接状态,也不确定,因为缓存代理可能会隐藏真实的用户连接状态。所有你知道的是脚本是否已经发送了所有数据,但是如果已经收到文件则没有。

你需要实现一些客户端交互式下载器,比如java applet ......但是你会遇到其他问题。