2014-09-03 295 views
0

在我的網頁上,我有用於下載mp3文件的鏈接。在瀏覽器中下載文件

當用戶點擊,我做了一個ajax調用,並在服務器上創建一個MP3文件。

我將文件的路徑返回到腳本,但現在,我該如何讓它下載用戶系統?

<SCRIPT TYPE="text/javascript"> 
    function voice(id){ 
     $.ajax({ 
       url:'/download/', 
       type:"POST", 
       data:{'id':id,'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()}, 
       success:function(return_data) { 
        alert(return_data['url']); 
       }, 
       error: function(){ 
        alert("Some Error"); 
       } 
      }); 
    } 
</SCRIPT> 

我得到的警報,但如何下載它的MP3文件的網址?

謝謝。

回答

1

創建在HTML中anchortag這是使用CSS

<a href="#" id="someID" class"hiddenUrl" style="visibility: hidden" target="_blank">Hidden</a> 

而且在你的JavaScript隱藏的

<SCRIPT TYPE="text/javascript"> 
    function voice(id){ 
     $.ajax({ 
       url:'/download/', 
       type:"POST", 
       data:{'id':id,'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()}, 
       success:function(return_data) { 
        var url= return_data['url']; 
        $('.hiddenUrl').attr('href',url) //adding value to the href attribute 
        $('.hiddenUrl').attr('download','any_filename.mp3'); 
        $('.hiddenUrl')[0].click(); 

       }, 
       error: function(){ 
        alert("Some Error"); 
       } 
      }); 
    } 
    </SCRIPT> 
+0

隨着你的解決方案,瀏覽器試圖播放MP3文件。我想要它下載。謝謝。 – Stark 2014-09-03 10:51:53

+0

我更新了應該工作的代碼。 – Cjames 2014-09-03 11:11:05

+0

不能給你足夠的upvotes。 – Stark 2014-09-03 11:18:10

0

假設您有一個以http開頭的網址,您可以做window.location = return_data['url']; ...這種方法相當於用戶單擊鏈接到mp3。另一種方法是創建一個將src設置爲新創建的鏈接的iframe。使用此方法,用戶的瀏覽器將提示下載文件,而無需更改位置(從當前頁面導航)。我推薦第一種方法。

+0

當我做' window.location = return_data ['url'];'b rowser試圖自行播放文件。 Mp3文件有時會以瀏覽器拒絕播放的方式損壞,但如果下載它可以在本地媒體播放器中正常播放。 – Stark 2014-09-03 10:44:10

0

這應該工作:

<SCRIPT TYPE="text/javascript"> 
    function voice(id){ 
     $.ajax({ 
      url:'/download/', 
      type:"POST", 
      data:{'id':id,'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()}, 
      success:function(return_data) { 
       window.location.href = return_data['url']; 
      }, 
      error: function(){ 
       alert("Some Error"); 
      } 
     }); 
} 
</SCRIPT> 
+0

使用您的解決方案,瀏覽器嘗試播放mp3文件。我想要它下載。謝謝。 – Stark 2014-09-03 10:52:12

+0

好的,所以你需要閱讀這個SO回答http://stackoverflow.com/a/10150310/2519700 – cor 2014-09-03 11:00:00

0
I think this will work 
<SCRIPT TYPE="text/javascript"> 
     function voice(id){ 
      $.ajax({ 
       url:'/download/', 
       type:"POST", 
       data:{'id':id,'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()}, 
       success:function(return_data) { 
        var url= return_data['url']; 
        window.location.assign(url); 
       }, 
       error: function(){ 
        alert("Some Error"); 
       } 
      }); 
    } 
    </SCRIPT>