2009-10-27 107 views
26

是否可以讓用戶下載具有不同名稱的文件?將不同名稱的文件下載到存儲名稱

例如,有一個名爲「4324ffsd34.jpg」的文件。我希望人們通過download.php下載它,使用不同的名稱(如「filetodownload.jpg」),而無需重命名原始文件。

+0

你也可以在Apache中用mod_rewrite來做到這一點,而不需要打你的PHP腳本。可能不適用於您的情況,但如果是這樣,它可以提高性能。 – Artelius 2009-10-27 01:34:52

回答

43

當然,使用內容處置header

header('Content-Disposition: attachment; filename="filetodownload.jpg"'); 

,如果你想提供一個默認的文件名,但不能自動下載,這似乎工作。

header('Content-Disposition: filename="filetodownload.jpg"'); 
+0

是的,我現在可以看到,thx :),但我想我也必須使用「readfile('original.pdf');」做到這一點 – 2009-10-27 01:25:29

+0

當然,也很好地設置Content-Length和Content-Type。您可以使用filesize()作爲長度,並根據擴展名編寫自己的函數來執行content-type或使用http://uk2.php.net/fileinfo – 2009-10-27 01:28:03

+0

@ RULE101您可以使用'readfile()'或' fread()'做到這一點 – 2015-07-24 03:43:36

19

當然,你可以,只是嘗試這樣的事:

$original_filename = '4324ffsd34.jpg'; 
$new_filename = 'my_new_filename_is_detailled.jpg'; 

// headers to send your file 
header("Content-Type: application/jpeg"); 
header("Content-Length: " . filesize($original_filename)); 
header('Content-Disposition: attachment; filename="' . $new_filename . '"'); 

// upload the file to the user and quit 
readfile($original_filename); 
exit; 

希望它能幫助!

0

沒有錯以上,但我不得不添加:

ob_clean(); 
flush(); 

之前的ReadFile

否則我無法打開下載JPG/PNG文件

9

也有另一種方式,如果你正在使用html5

<a href="link/to/my/file/with/a/name/i/dont/like.jpg" download="MyFile.jpg">Download</a> 

乾杯:3

+0

下載屬性不適用於safari,這僅適用於crome,firefox – 2015-12-11 07:20:58

+3

適用於我。沒有人再使用Safari了。至少沒有人認真瀏覽網頁... – 2016-08-04 04:19:08

+0

謝謝@GeorgeButiri – 2016-08-07 13:41:21

1
<a href="4324ffsd34.jpg" download="filetodownload">Download</a> 
+0

請注意,您不必指定文件擴展名,它會由瀏覽器添加。 – 2017-09-30 11:56:22

+0

此「下載」屬性僅適用於具有相同來源的資源的鏈接。 – 2017-09-30 11:56:53

相關問題