2014-05-01 50 views
1

我想單擊按鈕時開始文件下載。
我只是有文件的路徑。
我該如何開始下載?
這是我試過到目前爲止:開始使用JQuery下載文件

$('#download_button').click(function(){ 

    var filepath = $(this).attr('data-filepath'); 
    var do = '<a href="'+ filepath +'" download="file">file</a>'; 
    $(body).append(do); 
}); 

什麼我做錯了。
我從不想重定向頁面。如果安裝了客戶端機器上
正在下載的瀏覽器或軟件下載的文件開始

回答

4

另外,您還可以設置top.location

$('#download_button').click(function(){ 
    var filepath = $(this).attr('data-filepath'); 
    top.location.href = filepath; 
}); 
+0

我已經安裝了IDM爲什麼文件從未開始在IDM中下載。相反,它開始在瀏覽器中下載 – user3316523

+0

我不確定爲什麼Internet Download Manager不會下載該文件。也許確保你發送正確的標題,正如尼耶在他們的回答中提到的那樣。 –

+0

此代碼在本地主機上正常工作,但在我的服務器上,當我單擊下載按鈕時,它會在瀏覽器中以文本形式打開完整文件。 – user3316523

0

如果你想將文件下載到客戶端,那麼這樣做:

$('#download_button').click(function(){ 
    var filepath = $(this).attr('data-filepath'); 
    location.href = filepath; 
}); 

location.href將尋找一個頁面,但它不會找到任何東西,所以它會下載文件。

+0

我嘗試你的代碼是打開一個新窗口,之後接近,並提示下載 – user3316523

+0

@ user3316523,我已經編輯它 –

3

您無法強制使用JavaScript下載文件。

你可以做的是location.href = "somefile.ext";,但它會只有來,如果服務器包括Content-Disposition: attachment作爲其響應頭到該文件請求的一個下載。

+0

你建議Niet的。我已經嘗試'location.href'和我的文件是自定義extension.so xml文件當我單擊按鈕,而不是開始下載它顯示完整的文件作爲與瀏覽器中的文本 – user3316523

+0

配置您的服務器發送'內容 - 處置:附件'頭文件與您的自定義擴展名的文件。 –

+0

,我該怎麼做 – user3316523

0

您可以使用jQuery創建一個表單,並使用提交功能。這不會更改地址欄中的網址。

$('#download_button').click(function(){ 

     var filepath = $(this).attr('data-filepath'); 
     var form = $('<form>').attr('action', filepath); 
     form.submit(); 
}); 
+0

該代碼無法正常工作您是否錯過了某些東西 – user3316523

+0

這對我在服務器上使用MVC是完美的。請嘗試指定表單的http方法,將$('

')更改爲$('')或$(''),具體取決於你使用的方法。還要確保文件路徑可達。 –