PHP文件下载

第一种方式(使用a标签,且url就是文件下载地址):

<a href = "http://localhost/upload/文件名">文件名</a>      //点击该连接后会自动下载

优点:简单、方便、快捷、代码量最小

缺点:下载下来的文件与路径名始终保持一致,无法由程序分别指定,且一旦文件不存在,就会跳转或刷新页面

 

第二种方式(使用a标签,url指向php控制器,由php设置header后进行下载)

<a href="<?php echo "http://myController/download?
file_url=$file_url&file_realname=$file_realname":'');?>"><?php echo $file_realname;?></a>   
//点击该连接后会自动下载

在myController的download()方法中进行header设置

$file_url = request('file_url');
$file_realname = request('file_realname');
$base_url = base_url();
$file = dirname(__FILE__).'/../../'.str_replace($base_url,'',$file_url);
if(!file_exists($file)){
     echo "<script>alert('文件不存在')</script>";
     return;
}else{
     header("Content-type:application/octet-stream");
     header("Content-Disposition:attachment;filename = ".$file_realname);
     header("Accept-ranges:bytes");
     header("Accept-length:".filesize($file));
     readfile($file);
}

优点:可以用代码控制文件名的显示,而且可以在下载之前执行一些列操作

缺点:一旦文件不存在,就会跳转或刷新页面

 

第三种方式(使用ajax代替a标签,ajax访问php控制器,由php设置header后进行下载)

具体方法和方式二差不多,就是改成ajax,这里省略...

优点:因为是ajax,所以即使文件不存在,也不会跳转到其他页面,完全可以在js中控制

缺点:目前ajax对中文编码支持不太好,所以如果文件名用的是gbk或gbk2312那就比较麻烦了,最好都是统一的UDF8

 

转载于:https://my.oschina.net/u/3477605/blog/1810272

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值