2011-09-15 118 views
9

我希望能夠下載Web文件,但是當下載對話框打開時,文件名將被重命名。下載Javascript重命名文件

例如:文件:http://<server>/<site>/test.txt

,當我點擊下載文件,下載對話框的文件名開:test001.txt

我該如何存檔?

回答

0

你不能用Javascript做到這一點。 「保存到」-dialog由瀏覽器打開,您無法通過JS訪問它,這是操作系統的標準對話框。

在用戶點擊下載鏈接之前,您的服務器必須提供具有所需名稱的文件。

無論如何,你想重命名下載文件的原因是什麼?

+0

我在Sharepoint庫中有文件,我試圖創建一個自定義操作來下載文件並添加文檔版本的文件名稱。 要做到這一點自定義操作,我只能使用JavaScript代碼。 任何提示? – bruno2007

2

這個效果是通過發送一個額外的頭來完成的。例如,您可以使用PHP來實現:

可以使用.htaccess(在內部)將請求重定向到PHP文件來重寫URL。我將展示一個簡單的硬編碼爲例,頭怎麼可以設置:

<?php 
    header('Content-type: text/plain'); 
    header('Content-Disposition: attachment; filename="test001.txt"'); 
    readfile('files/test.txt'); 
    //assuming that the files are stored in a directory, not in a database 
?> 
+0

但這並不能體現他所尋找的動態性。我的課程想法 – Truesky

+0

我展示瞭如何設置標題。如果他有用PHP編程的技能,他可以改變代碼來完成他的目標。 –

0

如果你想要的是返回一個連續類型的文件名,你必須寫一個腳本,將跟蹤並將該文件提供給用戶。一種方法是使用普通的PHP,或者一些更高級的東西,如果它一次是幾個文件,可能是PHP中的cURL調用,因此它可以生成幾個不同的文件。我猜這就是你在做什麼,但是你不能在保存框上動態地改變文件名,你返回savename.txt文件名。

2

使用download屬性的鏈接。但它只適用於Chrome瀏覽器:)

+2

現在在FF也是如此:) –

+0

http://caniuse.com/#feat=download現在在Opera和Android瀏覽器支持。 –

13

正如InviS所示,現在鏈接上有一個download屬性。

實施例:

<a href="http://server/site/test.txt" download="test001.txt">Download Your File</a> 
+0

我將其與其他瀏覽器的target =「_ blank」結合使用。 – Darren

+1

http://caniuse.com/#feat=download現在在Opera和Android瀏覽器中支持。 –

+0

謝謝,更新了我的回答 –