手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP实现文件下载详解
PHP实现文件下载详解
摘要:1、php下载原理图2、文件下载源码:复制代码代码如下:3、文件编码问题解决方法:如果文件名是中文,php的函数不能识别中文文件名,一般如果...

1、php下载原理图

PHP实现文件下载详解1

2、文件下载源码:

复制代码 代码如下:

<?php

$file_name="哈哈.jpg";//需要下载的文件

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

$fp=fopen($file_name,"r+");//下载文件必须先要将文件打开,写入内存

if(!file_exists($file_name)){//判断文件是否存在

echo "文件不存在";

exit();

}

$file_size=filesize("a.jpg");//判断文件大小

//返回的文件

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

//按照字节格式返回

Header("Accept-Ranges: bytes");

//返回文件大小

Header("Accept-Length: ".$file_size);

//弹出客户端对话框,对应的文件名

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

//防止服务器瞬时压力增大,分段读取

$buffer=1024;

while(!feof($fp)){

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

echo $file_data;

}

//关闭文件

fclose($fp);

?>

3、文件编码问题解决方法:

如果文件名是中文,php的函数不能识别中文文件名,一般如果程序编码为utf-8,php的函数比较古老,只能识别gb2312编码的中文,所以把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转码。

比如,把一个字符串从utf-8转码为gb2312

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

4使用header方式实现文件下载源码

附上整理的下载方法,已封装好,可直接使用:

复制代码 代码如下:

function download_by_path($path_name, $save_name){

ob_end_clean();

$hfile = fopen($path_name, "rb") or die("Can not find file: $path_namen");

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

Header("Content-Transfer-Encoding: binary");

Header("Accept-Ranges: bytes");

Header("Content-Length: ".filesize($path_name));

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

while (!feof($hfile)) {

echo fread($hfile, 32768);

}

fclose($hfile);

}

以上就是本文的全部内容了,小伙伴们是否对php实现文件下载有了初步的认识了呢,自己多做做尝试,结合本文给出的简单例子,让自己的项目更完善吧。

【PHP实现文件下载详解】相关文章:

PHP实现的增强性mhash函数

PHP 增加了对 .ZIP 文件的读取功能

PHP实现文件下载断点续传详解

PHP实现文件安全下载

PHP SPL标准库之文件操作

PHP编译安装时常见错误解决办法

PHP4 与 MySQL 数据库操作函数详解

PHP与MySQL交互使用详解

用PHP实现验证码功能

用PHP实现标准的IP Whois查询

精品推荐
分类导航