php
文件下载,
我们常常通过网页下载各种各样的文件,到底是怎样实现地呢?本文从php的角度,结合http相关内容对文件下载做出相关讨论。
一般来说,通过超链接的方式可以直接下载文件。
这一招可以应对很多格式的文件如.exe,.rar等格式,但是应对图片格式,html,txt等类型的文件,点击链接只会直接显示在浏览器上。那么如何应对这种情况呢?这时候就需要php出场了。
在我有限的php编程经历中,遇到过两种php下载文件的形式。整体上都是利用通过设置响应的header 来实现文件下载。原理上没有本质的不同。
第一种:
立即学习
“
PHP免费学习笔记(深入)
”;
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
其中$filename设置的是下载文件的名称。 通过readfile()读入一个文件并且写入到输出缓存。
第二种:
这种方式更加详细描述了下载文件的过程。
http://www.bkjia.com/PHPjc/1036617.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/1036617.html
TechArticle
php文件下载, 我们常常通过网页下载各种各样的文件,到底是怎样实现地呢?本文从php的角度,结合http相关内容对文件下载做出相关讨论...
<a href='要下载的文件'>点击下载a>
$file_name='文件名';
header ( 'Content-Disposition: attachment; filename=' . basename ( $file_name ));
header ( 'Content-Length: '.filesize ( $file_name ));
readfile ( $file_name );$file_name='要下载的文件名';
$fp=fopen($file_name,"r+");
$file_size=filesize($file_name);
//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);