php下载文件几种方式,php下载文件的一种方式

$file_name="abc.jpg";//用以解决中文不能显示出来的问题

$file_name=iconv("utf-8","gb2312",$file_name);//$file_sub_path=$_SERVER[‘DOCUMENT_ROOT‘]."marcofly/phpstudy/down/down/";

$file_sub_path=$_SERVER[‘DOCUMENT_ROOT‘];$file_path=$file_sub_path.$file_name;//首先要判断给定的文件存在与否

if(!file_exists($file_path)){echo "没有该文件文件";return;

}$fp=fopen($file_path,"r");$file_size=filesize($file_path);//下载文件需要用到的头

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

Header("Accept-Ranges: bytes");Header("Accept-Length:".$file_size);//Header("Content-Disposition: attachment; filename=".basename($file_name));

Header("Content-Disposition: attachment; filename=".$file_name);$buffer=1024;$file_count=0;//向浏览器返回数据

while(!feof($fp) && $file_count

}

@fclose($fp);exit(0);/*第二种方法*/

/*ob_start();

$file_name="123.jpg";

$file_name = iconv("utf-8","gb2312",$file_name);

if (!is_file($file_name)){

echo "url error!";

} else {

$ua = $_SERVER["HTTP_USER_AGENT"];

if (preg_match("/MSIE/", $ua)) {

$encoded_filename = urlencode(basename($file_name));

$encoded_filename = str_replace("+", "%20", $encoded_filename);

$con_dis = ‘Content-Disposition: attachment; filename="‘ . $encoded_filename . ‘"‘;

} else if (preg_match("/Firefox/", $ua)) {

$con_dis = ‘Content-Disposition: attachment; filename*="utf8\‘\‘‘ . basename($file_name) . ‘"‘;

} else {

$con_dis = ‘Content-Disposition: attachment; filename="‘ . basename($file_name) . ‘"‘;

}

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

//输入文件标签

ob_end_clean();Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".filesize($file_name));Header($con_dis);

//输出文件内容

//读取文件内容并直接输出到浏览器

echo fread($file, filesize($file_name));@fclose($file);

exit(0);

}*/

/*echo $_SERVER["HTTP_USER_AGENT"];

echo "
";

echo $_SERVER[‘DOCUMENT_ROOT‘];*/

?>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值