无法下载codeigniter中保存在服务器文件夹中的文件

时间:2016-11-18 12:29:30

标签: php codeigniter download codeigniter-2 codeigniter-3

我在服务器文件夹上保存的文件很少,而且它们的路径存储在数据库表hwhic中,如下所示

 Table Name: student_file
    id  name     file
    1   abc     asd/fgh/abc.docx
    2   def     asd/fgh/def.pdf
    3   ghi     asd/fgh/ghi.doc

我从上表(student_file)中获取数据并以表格形式显示,其中'download'将是一个链接或一个看起来像这样的按钮

abc   download
def   download
ghi   download

现在我希望如果用户点击第一次下载,那么abc的文件应该下载并且与第二次和第三次相同。

我使用的代码是下载文件但是当我尝试在我的系统上打开下载的文件时,它说文件没有正确下载。

查看

<a href="<?php echo base_url()?>admin/download/1">Download</a>

控制器

public function download($id)
    {
        $data['download'] = $this->admin_model->get_download_data($id);
    }

模型

public function get_download_data($id)
    {
        $this->db->where('id',$id);
        $data = $this->db->get('student_file');
        $student_data = $data->row();

        $student_file = $student_data->file;
        $ext = substr($student_file, strpos($student_file, ".") + 1);
        $path = 'www.xyz.com/';
        $file = $path . $student_file;
        header("Content-type:application.$ext");
        header("Content-Disposition:attachment;filename='downloaded.$ext");
        readfile($file);
    }

任何人都可以告诉我如何使用codeigniter正确下载这些文件

2 个答案:

答案 0 :(得分:1)

我认为你很容易就这样做,

<a href="<?php echo base_url(); ?>path/to/file/abc.docx" target="_blank" ></a>
<a href="<?php echo base_url(); ?>path/to/file/def.pdf" target="_blank" ></a>
<a href="<?php echo base_url(); ?>path/to/file/ghi.docx" target="_blank" ></a>

答案 1 :(得分:0)

使用ip地址或域名定位文件不起作用。您应该使用某种方式使用本地服务器路径访问该文件。请尝试使用$path = $this->input->server('DOCUMENT_ROOT');代替$path = 'www.xyz.com/';