You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CodeIgniter项目中访问下载文件夹与跨磁盘PDF文件?

在CodeIgniter中访问D盘PDF文件的解决方案

你的代码问题在于**fopen()返回的是文件资源指针,并非浏览器可识别的访问路径**,所以直接把它放到href里肯定无法打开文件。以下是几种可行的解决方法:

方法一:直接使用本地文件协议(注意浏览器安全限制)

将a标签的href改为本地文件路径格式,浏览器支持通过file://协议访问本地文件:

<a target="_blank" href="file:///D:/pdf_file/demo.pdf">
    <i class="fa fa-eye text-success" aria-hidden="true"></i>
</a>

⚠️ 注意:多数现代浏览器会阻止从web服务器页面访问本地文件(安全策略限制),这个方法不一定能在所有环境下生效。

方法二:通过CodeIgniter控制器代理访问(推荐)

通过控制器读取D盘的PDF文件并输出给浏览器,绕开本地文件的安全限制,步骤如下:

  1. 创建控制器文件application/controllers/FileController.php:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class FileController extends CI_Controller {
    public function view_pdf($filename) {
        // 目标文件路径
        $file_path = 'D:/pdf_file/' . $filename;
        
        // 检查文件是否存在
        if (!file_exists($file_path)) {
            show_404();
            return;
        }

        // 设置响应头,告诉浏览器这是PDF文件
        header('Content-Type: application/pdf');
        header('Content-Disposition: inline; filename="' . basename($file_path) . '"');
        header('Content-Length: ' . filesize($file_path));

        // 输出文件内容
        readfile($file_path);
        exit;
    }
}
  1. 在视图中修改a标签,指向控制器的方法:
<a target="_blank" href="<?php echo base_url('filecontroller/view_pdf/demo.pdf'); ?>">
    <i class="fa fa-eye text-success" aria-hidden="true"></i>
</a>

这种方法通过web服务器代理读取文件,不会触发浏览器的本地文件安全限制,兼容性最好。

方法三:配置Apache虚拟主机映射D盘文件夹

如果需要批量访问D盘文件夹里的文件,可以给该文件夹配置一个虚拟主机,让它成为web可访问的目录:

  1. 打开XAMPP的Apache虚拟主机配置文件:C:\xampp\apache\conf\extra\httpd-vhosts.conf,添加以下配置:
<VirtualHost *:80>
    DocumentRoot "D:/pdf_file"
    ServerName pdf.local
    <Directory "D:/pdf_file">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  1. 修改系统hosts文件(C:\Windows\System32\drivers\etc\hosts),添加一行:
127.0.0.1 pdf.local
  1. 重启XAMPP的Apache服务,之后就可以通过以下路径访问PDF:
<a target="_blank" href="http://pdf.local/demo.pdf">
    <i class="fa fa-eye text-success" aria-hidden="true"></i>
</a>

额外注意事项

确保XAMPP的Apache进程拥有读取D:/pdf_file文件夹及其中文件的权限,否则会出现文件无法读取的错误。

内容的提问来源于stack exchange,提问作者RAHUL KUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:52:02