2013-03-24 32 views
0

我正在开发一个项目,用户可以上传他用于前端Web开发的文件并显示他在浏览器中完成的工作。 为了做到这一点,我要求用户上传带有名为test.html的html文件的项目。 我使用codeigniter的目的。使用ID在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文件

回答

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代码作为用户可以exploid你的系统。

祝你好运。

编辑

我想你可以算出来,但只是为了让你知道,你如下

<a href="<?php echo base_url();?>user/site_pages/2335332">Link to your page</a> 

假设你的代码里面site_pages提供链接的用户()控制器的功能:用户。

+0

我得到了你在说什么,但我想要的是加载多个HTML页面,使用单个控制器上传了本。为此,我需要传递一个参数以id的形式给控制器,它会加载相应的html页面.....我想我需要重新映射.. – user1978166 2013-04-02 05:04:46

相关问题