php实现文件下载的几种方式

365bet手机注册 🗓 2025-08-05 08:06:30 ✍ admin 👁 8269 👍 840
php实现文件下载的几种方式

本文简单介绍在PHP中几种常用文件下载方式。

一、直接链接文件下载

在知道文件路径的情况下,可以简单的通过页面“a”标签元素,直接下载文件。 代码如下:

下载文件

二、根据参数动态查找并跳转到下载链接

通常情况下,文件名是变动的,需要根据指定条件计算出文件名。此时可以在后台根据变量参数,动态计算查找到文件并跳转到下载链接。前端代码如下:

下载文件

后台代码如下:

$down = $_GET['filename']; // 获取文件参数

$filename = $down . '.rar'; // 构造文件名称

$dir = "/"; // 相对于网站根目录的下载目录路径

$down_host = $_SERVER['HTTP_HOST']; // 当前域名

// 如果文件存在,则跳转到下载路径

if (file_exists(__DIR__ . '/' . $dir . $filename)) {

header('location:http://' . $down_host . $dir . $filename);

} else {

header('HTTP/1.1 404 Not Found');

}

文件存在时,点击“下载文件”即可正常下载文件。否则会提示404文件不存在,如下图

三、使用fread()函数把文件直接输出到浏览器

除了通过文件名下载,我们也可以在后台通过fread方法,读出文件内容,然后将文件内容以流的方式直接输出到浏览器。代码如下:

$file_name = "down.rar"; // 下载文件名

$file_dir = "./"; // 下载文件存放目录

// 检查文件是否存在

if (!file_exists($file_dir . $file_name)) {

header('HTTP/1.1 404 NOT FOUND');

} else {

// 以只读和二进制模式打开文件

$file = fopen($file_dir . $file_name, "rb");

// 告诉浏览器这是一个文件流格式的文件

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

// 请求范围的度量单位

Header("Accept-Ranges: bytes");

// Content-Length是指定包含于请求或响应中数据的字节长度

Header("Accept-Length: " . filesize($file_dir . $file_name));

// 用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。

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

// 读取文件内容并直接输出到浏览器

echo fread($file, filesize($file_dir . $file_name));

fclose($file);

exit ();

}

总结:

第一个和第二个操作比较简单,但是容易暴露文件的真实地址,安全性不高。第三种能够较好的把文件的真实地址隐藏起来。

相关推荐

BIM平台有哪些?目前国内四大主流BIM平台
365bet提款多少时间

BIM平台有哪些?目前国内四大主流BIM平台

🗓 06-28 👁 1712