注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梨花寨

 
 
 

日志

 
 
 
 

ajax+php实现下载文件功能  

2016-10-06 08:03:04|  分类: css |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
为什么要选择js方式下载文件?因为下载地址需要根据用户的点击及选择来动态计算的。然后后端程序生成一个url返回到前端,前端得到这个url再做下载处理。

后端程序已不同业务而不同,这里不做举例。只要返回给前端待下载的问题全路径即可。

用户点击后,发请求到后端:

$('.to-download').click(function(){
var load = $(this).attr('data-id');
//$load是有值的
if($dload!=""){
$.ajax({
url:'php/dload.php?m='+load,
type:'post',
async:false,
success:function(url){
//todo
}
})
}
})

得到文件路径,既可以利用浏览器来下载文件了。

function downloadFile(url) {
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}

$('.to-download').click(function(){
var load = $(this).attr('data-id');
//$dload是有值的
if($dload!=""){
$.ajax({
url:'php/dload.php?m='+load,
type:'post',
async:false,
success:function(url){
downloadFile(url);
}
})
}
})

浏览器下载文件有两种方式:

方案一:使用

window.open(url)

这样会有一个问题,因为会打开一个窗口!虽然这个窗口会在点击下载时关闭,但看起来确实不美观! 而且碰到比较大的文件时候,浏览器会出现“假死” 状态!

function downloadFile(url) {
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}

推荐只有方案二。

本文来源梨花寨,查看更多技术文章。

  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018