簡體   English   中英

用原始文件名下載PHP文件

[英]PHP File download with original filename

我正在尋找一種使用PHP下載文件並保留其原始名稱的可能性。

這應該可以直接鏈接到文件(“ foo.bar/test.zip”),也可以用於通過PHP文件代理的下載(“ foo.bar/download.php?fileid=12345” <-這將打開一個保存-提示輸入test.zip作為給定名稱)。 PHP中是否有可能用於執行此操作?

我嘗試了各種可能性(fopen,cURL,file_get_content等)。 但是我發現的所有可能都要求我手動設置新文件名以便將其保存在本地。

更好的是,如果我可以通過腳本(具有原始名稱!)將遠程文件代理到正在調用腳本的客戶端,而無需臨時保存它。 我發現以下代碼片段可以完成此操作

$fp = fopen($_POST["url"], 'rb');
foreach (get_headers($_POST["url"]) as $header)
{
    header($header);
}
fpassthru($fp);

我要下載的文件大小正確,但名稱錯誤(它具有被調用的PHP腳本的名稱,在我的情況下為downloader.php而不是例如test.zip)。

任何想法如何做到這一點將不勝感激。

提前致謝!

可能是這樣的事情會有所幫助:

$quoted = sprintf('"%s"', addcslashes(basename($file), '"\\'));
$size   = filesize($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $quoted); 
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);

只需將$ file替換為要下載的文件即可。

暫無
暫無

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

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