一、前言
在 Web 应用程序中,文件下载和查看是非常常见的功能。在 ThinkPHP 框架中,我们可以很方便地实现这些功能,本文将介绍如何在 ThinkPHP 中实现文件下载和查看功能。
二、文件下载
文件下载是指将服务器上的文件发送到客户端,供客户端用户下载和保存。在 ThinkPHP 中,我们可以使用以下代码来实现文件下载功能:
代码语言:javascript复制public function download()
{
// 获取要下载的文件路径
$file_path = './uploads/test.pdf';
// 检查文件是否存在
if (!file_exists($file_path)) {
// 文件不存在,抛出异常
abort(404, 'File not found.');
}
// 设置响应头,告诉浏览器下载文件
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file_path).'"');
header('Content-Length: '.filesize($file_path));
// 读取文件内容并发送到客户端
readfile($file_path);
}
在上述代码中,我们首先使用 file_exists() 函数检查要下载的文件是否存在,如果文件不存在,我们使用 abort() 函数抛出异常,告诉客户端文件未找到。如果文件存在,我们使用 header() 函数设置响应头,告诉浏览器将文件作为附件下载,并设置文件名。最后,我们使用 readfile() 函数读取文件内容并发送到客户端。
三、文件查看
文件查看是指在浏览器中查看服务器上的文件,常见的文件类型包括图片、PDF 文件、文本文件等。在 ThinkPHP 中,我们可以使用以下代码来实现文件查看功能:
代码语言:javascript复制public function view()
{
// 获取要查看的文件路径
$file_path = './uploads/test.pdf';
// 检查文件是否存在
if (!file_exists($file_path)) {
// 文件不存在,抛出异常
abort(404, 'File not found.');
}
// 获取文件 MIME 类型
$file_type = mime_content_type($file_path);
// 设置响应头,告诉浏览器打开文件
header('Content-Type: '.$file_type);
header('Content-Length: '.filesize($file_path));
// 读取文件内容并发送到客户端
readfile($file_path);
}
在上述代码中,我们使用 mime_content_type() 函数获取要查看的文件的 MIME 类型,然后使用 header() 函数设置响应头,告诉浏览器打开文件。最后,我们使用 readfile() 函数读取文件内容并发送到客户端。
需要注意的是,如果要查看的文件是图片或 PDF 文件,我们可以在 HTML 中使用 <img> 标签或 <embed> 标签来显示文件内容。如果要查看的文件是文本文件,我们可以在 HTML 中使用 <pre> 标签或 <iframe> 标签来显示文件内容。