2013-03-24 67 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

相關問題