我正在开发一个项目,用户可以上传用于前端Web开发的文件,并展示他在浏览器中完成的工作。 为了做到这一点,我要求用户使用名为test.html的html文件上传项目。 我正在使用codeigniter。
我已经完成了上传过程并在表格中写入了信息,但是当文件完成上传时我仍然不知道如何提供链接...即。我有一个上传控制器如下:
<?php class Main extends CI_Controller {
//{construct and all the parts}
//upload function
function site_pages(){
$this->load->view('header'); $this->load->view('nav'); $this->load->view('test.html');
}
function do_upload(){
.....code for file upload....
...update the database with the folder_id...
}
然而,在完成此操作后,我需要提供用户的链接,即表格
<a href="<?php echo base_url();?>/main/site_pages/folder_id/test.html" >
我坚持如何在此表单中生成此ID以及如何在控制器的特定视图中加载test.html文件
答案 0 :(得分:1)
您可以为此目的构建控制器,并使用该控制器读取上传的html文件。读取文件后,可以从控制器
中输出您可以将文件名映射到ID,并使用此ID标识每个文件。您可以将html文件从form.html重命名为2335332.html,然后使用此id作为参数从目录中读取文件。
以下是阅读文件的方法。
// segment 3 will have parameter passed: 2335332
$file_name=$this->uri->segment(3)."html";
// you should check in this point weather this file exists.
$this->load->helper(‘file’);
//read a file
$data = read_file('./path_to/to/'.$file_name.'.html');
// do javascript/php/other cleanup on $data
此时你有html代码,你可以输出
$this->output->set_output($data);
但是我应该警告你,你应该清理上传的html文件以寻找可能的javascript / php代码,因为用户可以利用你的系统。
祝你好运。
修改强>
我认为您可以解决这个问题但只是为了让您知道,您为用户提供了如下链接
<a href="<?php echo base_url();?>user/site_pages/2335332">Link to your page</a>
假设您的代码位于控制器的site_pages()函数内:user。