0

我正在开发一个项目,用户可以上传他用于前端 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 文件

4

1 回答 1

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() 函数中:

于 2013-03-25T04:52:21.080 回答