1.php下载示意图
2.文件下载源代码:
复制代码代码如下:Php $ file _ name=' ha ha.jpg//要下载的文件是$ file _ name=iconv ('utf-8 ',' gb2312 ',' $ file _ name ');$fp=fopen($file_name,' r ');//要下载文件,必须先打开文件并将其写入内存,如果(!file _ exists($ file _ name){//确定文件是否存在回显“文件不存在”;exit();} $ file _ size=file size(' a . jpg ');//确定文件大小//返回文件头('内容类型: application/octet-stream ');//字节格式的返回头(“接受范围:字节”);//返回文件大小头(' accept-length: '。$ file _ size);//弹出客户端对话框,对应的文件名头(' content-disposition :附件;文件名='。$ file _ name);//为防止服务器瞬时压力增大,分段读取$ buffer=1024while(!feof($ FP)){ $ file _ data=fread($ FP,$ buffer);echo $ file _ data}//关闭文件fc lose($ FP);
3.文件编码问题的解决方案:
如果文件名是中文,php函数无法识别中文文件名。一般如果程序代码是utf-8,则php函数比较旧,只能识别gb2312编码的中文。所以中文可以通过iconv(“原码”、“待转换码”、“待转码字符串”)功能进行转码。
例如,将字符串从utf-8转码为gb2312
$file_name=iconv("utf-8 "," gb2312 "," $ file _ name ");
4使用头文件实现文件下载源代码
附整理下载方法,已打包,可直接使用:
复制代码如下:函数download _ by _ path ($ path _ name,$ save _ name){ ob _ end _ clean();$hfile=fopen($path_name,' rb ')或die('找不到文件: $ path _ name n ');标题(“内容类型:应用程序/八位字节流”);标头('内容-传输-编码:二进制');标头('接受-范围:字节');标题('内容-长度: '。file size($ path _ name));标题('内容-处置:附件;filename= ' $ save _ name ');while(!feof($hfile)) { echo fread($hfile,32768);} fc lose($ hfile);}
以上就是本文的全部内容。你的朋友对php的文件下载有初步的了解吗?多尝试,结合本文给出的简单例子,让你的项目更加完美。