关于PHP代码写的下载文件打不开的问题,自己备忘!(韩老师2011年的例子)

<?php

$file_name="中文.jpg";

//中文转码

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

//当前文件夹下,打开down文件夹下文件

$file_path="./down/".$file_name;

//设置绝对路径时,如下,如果不加当前文件夹名“http”,死活就是提示:文件不存在

 // 为什么当时2011年视频里,就不用加呢?

//$file_path=$_SERVER['DOCUMENT_ROOT']."/http/down/".$file_name;

//-----------------------------------------------------

//此三处,最好按红字这样,如果这样,很容易不存在!!!不存在!!!不存在!!!

if(!file_exists($file_path)){      

    echo"文件不存在";   

    return;

     }

$fp=fopen($file_path,"r");

$file_size=filesize($file_path);

//--------------------------------------------------------------------------------

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

header("Accept-Ranges:bytes");

header("Accept-Length:$file_size");

header("Content-Disposition:attachment;filename=".$file_name);

//设置每次回送多大的数据 $buffer=1024;

//为了下载的安全,我们最好做一个文件字节读取计数器

$file_count=0;

//这句话用于判断文件是否结束

//feof:测试文件是否到了结束的位置

//这里 ($file_size-$file_count)>0)后面的两个括号极易标错,导致文件可以下载打不开

while(!feof($fp) && ($file_size-$file_count)>0){   

    $file_data=fread($fp,$buffer);    

    $file_count+=$buffer;    

    echo $file_data;

}

fclose($fp);

?>

转载于:https://www.cnblogs.com/lzh1983/p/6945068.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值