php文件打开就下载文件,php 实现文件下载 避免直接打开

有些文件在浏览器里点击默认是打开的,如果不想打开想实现直接下载就得用代码来实现了

function download($filename){

if(empty($filename))return false;

if (!file_exists($filename)){

header("Content-type: text/html; charset=utf-8");

echo "File not found!";

exit;

} else {

$file = fopen($filename,"r");

Header("Content-type: application/octet-stream");

Header("Accept-Ranges: bytes");

Header("Accept-Length: ".filesize($filename));

Header("Content-Disposition: attachment; filename=".basename($filename));

echo fread($file, filesize($filename));

fclose($file);

}

}

以上文件只支持本地文件如果要是有网上文件下载怎么办呢

/**

* 下载

* @param 要下载的文件完整路径

*/

function download($filename){

if(empty($filename))return false;

if (!check_file_exists($filename)){

header("Content-type: text/html; charset=utf-8");

echo "File not found!";

exit;

} else {

$file = fopen($filename,"r");

Header("Content-type: application/octet-stream");

Header("Accept-Ranges: bytes");

Header("Accept-Length: ".filesize($filename));

Header("Content-Disposition: attachment; filename=".basename($filename));

echo fread($file, filesize($filename));

fclose($file);

}

}

/**

* 检查文件是否存在

* @param 要检查的文件完整路径

*/

function check_file_exists($filename){

if(str_exists($filename,'http')){

$fileExists = @file_get_contents($filename,null,null,-1,1) ? true : false;

}else{

$fileExists =file_exists($filename)

}

return $fileExists;

}

function str_exists($haystack, $needle){

return !(strpos($haystack, $needle) === FALSE);

}

转载至链接:https://my.oschina.net/xiaogg/blog/1923274

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值