簡體   English   中英

將文件從服務器下載到客戶端

[英]Downloading a file from server to client

我看到很多答案似乎都可以回答這個問題,盡管它們似乎對我沒有用。 所有的答案都使用readfile(),這應該會帶來一個下載框,盡管對我而言,它始終總是在控制台中打印。 這是我的代碼。

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header("Content-Transfer-Encoding: Binary");
    header('Content-Disposition: attachment; filename="\\'.basename($path).'\"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($path));       
    readfile($path);

這段代碼既取自php readfile文檔,又取自許多堆棧溢出問題,並將其作為可接受的答案。 盡管該路徑是正確生成的,並且據我所知它正確到達該路徑,但該文件仍保存在webroot之外,因為該文件會在控制台窗口中打印內容。

我調用php文件的方式也是使用ajax從js文件中獲取的。

擴展CBroe的評論:

如果將瀏覽器定向到下載URL,則瀏覽器應正確解釋下載標題並顯示一個下載對話框。 當您的Javascript在后台查詢此URL時,不會發生這種情況。

在不重定向用戶瀏覽器位置的情況下顯示下載對話框的一種方法是將下載URL加載到頁面上的iFrame中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM