我很难在webroot文件夹外查看pdf文件。
这是视图文件-我从URL中抓取文件id,然后查询db以获取从上传存储的所有文件信息。
$fid = $_GET['fid'];
$query = $this->db->query("SELECT * FROM files WHERE FID = $fid");
$fileinfo = $query->result();
foreach ($fileinfo as $row)
{
$fname = $row->file_name;
$ftype = $row->file_type;
$fpath = $row->file_path;
$full_path = $row->full_path;
$raw_name = $row->raw_name;
$client_name = $row->client_name;
$file_ext = $row->file_ext;
$file_size = $row->file_size;
$is_image = $row->is_image;
$width = $row->image_width;
$height = $row->image_height;
$img_type = $row->image_type;
$img_size = $row->image_size_str;
$orig_name = $row->orig_name;
$created = $row->created;
}
然后我将该信息传递给File_viewer_model使用以下命令:
$this->load->model('File_viewer_model');
$this->File_viewer_model->getFileInfo($fname,$ftype);
模型中接收数据的函数如下:
function getFileInfo($fname,$ftype){
$path = '/home/sitename/uploads/' . $fname;
header('Content-Type: ' . $ftype);
header('Content-Length: ' . filesize($path));
readfile($path);
}
问题是,当我点击链接打开一个新的选项卡,并试图显示文件,我得到以下错误:
文件不以'%PDF-'开头。
该文件位于一个777权限目录下,名为上载,就在webroot之外-我在网上到处都是,似乎有几种方法可以显示pdf文件,但似乎没有一种适合我。任何帮助都会很感激。谢谢!
解决:问题是我在$this->load->view('file_viewer_view');
节之前在控制器中传递header_view页面。
PDF查看器试图在file_viewer_view中的header('Content-Type: application/pdf')
代码之前先解析header_view,从而产生错误。
我在$this->load->view('file_viewer_view');
之前从控制器中删除了所有内容,它像冠军一样工作!
希望这能让别人少花几个小时像我一样把头撞在墙上!