2013-03-13 79 views
1

我已經編寫了用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); 
} 

是在下載文件的任何觸發,或處理?

+3

不是真的,但你可能會對[Php connection_status]感興趣(http://stackoverflow.com/questions/2389035/php-connection-status)/ [PHP連接處理](http://www.php.net) /features.connection-handling) – hakre 2013-03-13 12:43:42

+1

還有很多類似的問題:http://stackoverflow.com/questions/2641667/deleting-a-file-after-user-download-it,http://stackoverflow.com/questions/7864407/php-limiting-parallel-simultaneous-downloads-how-to-know-if-download-was-canc,http://stackoverflow.com/q/1563187/46675,http://stackoverflow.com/questions/8771226 /確定 - 成功下載使用php-readfile,http://stackoverflow.com/questions/10162944/trigger-action-when-file-download-actually-completes – 2013-03-13 12:48:00

+0

爲什麼不嘗試點擊記錄功能?可能無法跟蹤「誰」下載它,但它會跟蹤它下載/點擊的次數。 – 2013-03-13 12:53:07

回答

0

它是不可能的。沒有直接的方法來捕獲。可能有一些解決方法,但它並不完美。

+1

這不是真的(完全)。 – 2013-03-13 13:03:21

+0

同樣可以說什麼http/udp相關的任何東西。 – 2013-03-13 13:58:30

0

你永遠不會知道。即使您檢測到連接狀態,您也不確定,因爲緩存代理可能會隱藏真實的用戶連接狀態。所有你知道的是,如果腳本已經發送了所有數據,但沒有收到文件。

您需要實現一些客戶端交互式下載程序,就像一個java小應用程序一樣......但您會遇到其他問題。

相關問題