PHP 浏览器文件下载
本文主要介绍了PHP 浏览器文件下载的示例代码,欢迎大家的学习。
http协议文件下载
Header信息是用来告诉Apache和浏览器下载文件的相关信息的。HTTP头部信息有:
header("Content-type: application/octet-stream");--content-type的含义代表文件MIME类型是文件流格式。
如果在Apache配置里面把文件的MIME类型设为application/octet-stream(如add application/octet-stream .xxx.rar),
那么浏览器(客户端)就知道,这是一个文件流格式的文件并提示用户下载。
header("Accept-Ranges: bytes");--Accept-Ranges是一个响应头标,它允许服务器指明将在给定的偏移和长度处,为资源组成部分的接受请求,该头标的值为请求范围的度量单位。
header("Accept-Length: " . $file_size);--是指定包含于请求或响应中数据的字节长度
header("Content-Disposition: attachment; filename=" . $file_name);--Content-Disposition:attachment是用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值
如果文件名是中文,php的函数不能识别中文文件名,如果程序编码为utf-8,把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转码。
把一个字符串从utf-8转码为gb2312,$file_name=iconv(“utf-8”,”gb2312”,”$file_name”);
/**
* 下载文件
* @param string $file_name 文件名(中英文)
* @return string
*
*/
function download($file_name)
{
//对中文文件名进行转码
$file_name = iconv("UTF-8", "GB2312", $file_name);
//文件绝对路径:E:/wamp/www/aa.txt
$filepath = $_SERVER['DOCUMENT_ROOT'].$file_name;
//检查文件是否存在
if (!file_exists($filepath)) {
echo "该文件不存在!";
return;
}
//打开文件
$fp = fopen($filepath, 'r');
//计算文件大小
$file_size = filesize($filepath);
//HTTP头部信息
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: " . $file_size);
header("Content-Disposition: attachment; filename=" . $file_name);
//输出文件内容
echo fread($fp, $file_size);
$buffer = 1024;
//文件字节读取计数器
$file_count = 0;
//判断文件是否结束 feof
while (!feof($fp) && ($file_size - $file_count > 0)) {
$file_data = fread($fp, $buffer); //统计读了多少字节
$file_count += $buffer;
echo $file_data;
//把数据会送给浏览器
}
fclose($fp);
}
download("aa.txt"); //填写文件名即可
以上就是本文PHP 浏览器文件下载的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助。


相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型