2009-04-07 180 views
8

我想知道是否有任何方法使用JavaScript實現瀏覽器的下載文件提示。使用JavaScript瀏覽器下載文件提示

我的理由 - 好的用戶將上傳文件到本地文件服務器,無法從Web服務器訪問。換句話說,兩者都將在不同的領域!

例如,假設網站託管在www.xyz.com上,但文件將駐留在地址爲\\10.10.10.01\Files\file.txt的本地文件服務器上。我如何上傳/傳輸文件到本地文件服務器...使用ActiveX和VBscript! (不要問:-)

因此,我將本地文件路徑存儲在數據庫中,並將該數據綁定到網格。當用戶點擊該鏈接時,該文件將在窗口中打開(使用JavaScript)。

問題是某些文件類型,如文本,jpg,pdf等在瀏覽器窗口中打開。我如何能夠使用客戶端腳本實現content-typecontent-disposition?這甚至可能嗎?

編輯: 本地文件服務器有一個窗口的共享文件夾上的文件保存。

+0

什麼樣的服務器是你的'本地文件服務器'?一個實際的HTTP/FTP /無論服務器還是你在談論Windows的共享文件夾(即你的意思是`\\ 10.10.10.01`而不是`// 10.10.10.01`? – Christoph 2009-04-07 19:19:19

+0

它是一個共享文件夾在Windows&實際路徑文件將是'\\ 10.10.10.01 \ Files \ file.txt' – aix 2009-04-08 10:26:09

+0

@aix:那麼你的運氣不好 - 沒有辦法通過HTTP頭髮送適當的元信息 – Christoph 2009-04-08 15:48:10

回答

5

「content-disposition:attachment」幾乎是強制執行的唯一方法,而且這個必須設置在響應頭中。

1

你可以嘗試使用一個普通的超鏈接type="application/octet-stream"。似乎在FF中工作,但IE和Opera忽略該屬性。

4

如果該文件在您例如Web服務器上一樣,你可以這樣做:

window.location.replace(fileUrl); 

..和瀏覽器會找出與該文件做。這對大多數文件很好,比如.xls,.csv等,但請記住,這不是全面證明,因爲用戶的MIME處理程序設置將決定如何處理該文件...即,如果它是一個.txt文件,它很可能只是在瀏覽器中顯示,不會被賦予一個「文件下載」對話框。

3

截至2015年8月,向您的代碼中添加「下載」屬性會啓用您要查找的行爲,至少在Chrome中。