2014-05-01 52 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方法,将$('

')更改为$('')或$(''),具体取决于你使用的方法。还要确保文件路径可达。 –