2012-02-12 45 views
5

我需要一個Im開發工具中的問題幫助。我不需要使用readfile(),file_get_contents()或fread()(這些文件太大而無法在服務器上讀取它們並在訪問者PC上再次下載它),我需要下載外部文件並對其進行重命名。強制從外部服務器下載並重命名

我曾與第一次嘗試:

代碼:

header("Location: http://www.example.com/example_download.zip"); 

它適用於下載,但沒有對example_download.zip重命名。

所以我試圖用的ReadFile():

代碼:

header("Content-Disposition: attachment; filename="example_download_2.zip"\n\n"); 
header("Content-Type: application/force-download"); 
    readfile("http://www.example.com/example_download.zip"); 
    exit; 

隨着它工作得很好,先下載服務器上的遠程文件,重命名它上面的代碼並將其發送到後訪問者使用新名稱,但此過程的資源使用率非常高,並且帶寬使用率也很高。

所以我正在尋找一種方法來生成外部文件的強制下載,並對其進行重命名,並使用新名稱生成下載,但直接從源文件下載。這是可能的?

預先感謝 問候

+0

如果客戶端要直接從源代碼下載,那麼不可以,沒有辦法給它一個新名稱。 – drew010 2012-02-12 01:25:03

+0

http://stackoverflow.com/questions/541265/renaming-file-on-another-server-as-user-downloads-it-2-using-php – FeRtoll 2012-02-12 01:27:30

回答

2

這是不可能爲你做到這一點。如果您的php腳本將客戶端重定向到其他某個url,那麼所有HTTP標頭都留給新的url腳本來決定。你必須下載它才能重命名它。

4

HTML5現在允許你做你想要的東西通過download屬性:

<a href="http://www.example.com/example_download.zip" download="custom_filename.zip"> 
    Link 
</a> 

更多信息:

http://developers.whatwg.org/links.html#attr-hyperlink-download http://updates.html5rocks.com/2011/08/Downloading- HTML5-a-download下載資源

+0

我不這個這個工程跨域或一個子-域。 – Ben 2013-07-09 10:01:11

+0

它適用於所有瀏覽器和所有操作系統嗎?因爲,下載屬性不適用於基於Linux的操作系統。 – kalidasan 2015-10-07 11:29:30

+0

不是:http://caniuse.com/#feat=download – Mauro 2015-10-07 21:14:57

相關問題