在我看来,我有一个链接,允许用户在新窗口中查看文件:
<li>
<a href="/files/fileview/<?php echo $files_selectallrow->fileid; ?>" target="_blank">
<i class=" icon-file-eye"></i>
View this file
</a>
</li>
这将通过控制器加载文件,控制器在视图中显示文件:
控制器:
//Load model
$this->load->model('files/files_model');
//Lookup file
$file = $this->files_model->findfilebyid($fileid);
//Get data
$data['file'] = base_url(). '' . $file->filenamepath."/".$file->filename.".".$file->filetype ;
$data['header'] = $file->filetypeheader;
//Load view
$this->load->view('portal/files/fileview_view', $data);
查看:
// Let the browser know what file is coming.
header("Content-type: ".$header);
header("Content-Length: " . filesize($file));
// Send the file to the browser.
readfile($file);
这应该是完美的。 当然,默认情况下,您可以通过直接网址访问该文件来查看该文件,例如:http://www.example.com/filestorage/myfile.pdf
我想通过添加一个带有拒绝所有规则的.htaccess文件来防止这种情况。 但是,这也会阻止查看我的文件...
我有点迷失方向。我应该将Deny保留在所有.htaccess规则中,并以另一种方式显示我的文件,或者,我是否应该调整.htaccess文件以使其拒绝所有文件,除了我的视图?
由于
答案 0 :(得分:0)
这是因为您仍在使用其URL访问该文件,您应该使用实际的文件路径来读取该文件。
通常情况下,您使用base_url()
代替'./'
,这意味着它将从您放置index.php文件的位置开始。
你不需要这里的视图,你应该把那些代码放在你的控制器中;在这里有一个观点根本没有任何意义。