40
A
回答
48
輸出文件之前發送以下標題:
header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($File));
header("Connection: close");
@grom:有趣的關於 '應用/八位字節流' MIME類型。我沒有意識到這一點,總是隻使用'應用程序/強制下載':)
36
以下是發回pdf的示例。
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Transfer-Encoding: binary');
readfile($filename);
@Swish我沒有找到應用程序/力下載的內容類型做什麼不同(在IE和Firefox測試)。是否有不返回實際MIME類型的原因?
在發佈PHP手冊 Hayley Watson另外:
如果要強制,而不是渲染到可以下載並保存文件時,請記住,有沒有這樣的MIME類型爲「應用程序/力 - 下載」。在這種情況下使用的正確類型是「application/octet-stream」,而使用其他任何東西都僅僅依賴於客戶端應該忽略無法識別的MIME類型並使用「application/octet-stream」來替代(參考:Sections RFC 2046的4.1.4和4.5.1)。
也根據IANA沒有註冊的應用程序/強制下載類型。
7
一個乾淨的例子。
<?php
header('Content-Type: application/download');
header('Content-Disposition: attachment; filename="example.txt"');
header("Content-Length: " . filesize("example.txt"));
$fp = fopen("example.txt", "r");
fpassthru($fp);
fclose($fp);
?>
0
我的代碼適用於TXT,DOC,DOCX,PDF,PPT,PPTX,JPG,PNG,壓縮擴展和我認爲它能夠更好地明確地使用實際的MIME類型。
$file_name = "a.txt";
// extracting the extension:
$ext = substr($file_name, strpos($file_name,'.')+1);
header('Content-disposition: attachment; filename='.$file_name);
if(strtolower($ext) == "txt")
{
header('Content-type: text/plain'); // works for txt only
}
else
{
header('Content-type: application/'.$ext); // works for all extensions except txt
}
readfile($decrypted_file_path);
相關問題
- 1. 自動下載啓動
- 2. 如何在下載apk後自動啓動Android安裝程序?
- 3. 無法啓動自動下載
- 4. 如何在PHP中自動加載類?
- 5. PHP自動下載文件
- 6. php ie9自動下載
- 7. Selenium:我如何獲得自動啓動的下載鏈接?
- 8. 如何在java中下載後自動啓動一個exe文件
- 9. 如何在Ubuntu中自動啓動Jenkins?
- 10. 如何在啓動時自動在OS X中啓動gerrit?
- 11. React-Redux如何在加載時自動啓動一個動作
- 12. 如何在Linux下自動加載給定的任何新啓動的進程?
- 13. PHP SESSID自動啓動
- 14. 如何自動加載功能在PHP
- 15. 如何啓動Android下載管理器
- 16. 如何在啓動計算機時自動從網站下載jasper報告
- 17. 在網站上自動啓動文件下載?
- 18. PHP如何啓動
- 19. 如何在文檔加載時自動啓動圖像滑塊?
- 20. 如何在`play start`啓動時自動重載代碼?
- 21. 如何在啓動Delphi時自動加載項目
- 22. 如何在瀏覽器加載時自動啓動iMacros Javascript
- 23. 在啓動時(在JBoss上)啓動/自動加載EJB /加載EJB
- 24. 下載後自動打開設置[PHP]
- 25. 在PHP自動加載
- 26. 如何在主機重啓的情況下自動重啓phoenix?
- 27. 生成可下載的文件鏈接並自動啓動下載
- 28. 如何在Google Glass啓動時自動啓動應用程序?
- 29. Ubuntu-Apache:如何在啓動時自動啓動apache?
- 30. 如何在啓動Amazon EC2實例後自動啓動Tomcat
它可以在PC上運行,但是......當我訪問Android設備上的下載頁面時,「無法下載。不支持的內容」。爲什麼? – Emerald214 2012-07-12 09:42:17
@ Emerald214沒有PDF閱讀器。或者沒有關於PDF內容類型的關聯 – grom 2012-07-13 06:38:40
特別是如果目標文件類型是.zip,並且您在頁面上執行的所有操作都是通過PHP啓動文件下載,則可能需要添加```ob_clean();` ``和```ob_flush();```在上面的答案中提供的代碼之前;當試圖在Windows中本地打開.zip時,我遇到了一個問題,即以這種方式獲取的操作系統報告的.zip-archives無效,即使7zip和其他專用的壓縮歸檔格式處理工具也可以應對它們。 – SeldomNeedy 2015-07-09 22:41:00