2015-06-25 49 views
1

我是CodeIgniter的新手,刚刚通过NetTuts intro课程。 我现在正在试图建立在我学到的东西上。CodeIgniter添加文件上传到现有的编辑功能

我该如何将文件上传字段添加到现有的页面类型?下面是我的页面控制器的编辑功能。这是一个标题,团队,正文,模板,Parent_ID的基本页面。我如何将文件上传数据添加到它?

我想将文档上传到'Uploads'目录,并将其文件路径保存到现有的Page表格中。我已将'文件'列添加到Page表中。

public function edit ($id = NULL) 
{ 
    // Fetch a page or set a new one 
    if ($id) { 
     $this->data['page'] = $this->page_m->get($id); 
     count($this->data['page']) || $this->data['errors'][] = 'page could not be found'; 
    } 
    else { 
     $this->data['page'] = $this->page_m->get_new(); 
    } 

    // Pages for dropdown 
    $this->data['pages_no_parents'] = $this->page_m->get_no_parents(); 

    // Set up the form 
    $rules = $this->page_m->rules; 
    $this->form_validation->set_rules($rules); 

    // Process the form 
    if ($this->form_validation->run() == TRUE) { 
     $data = $this->page_m->array_from_post(array(
      'title', 
      'slug', 
      'body', 
      'template', 
      'parent_id' 
     )); 
     $this->page_m->save($data, $id); 
     redirect('admin/page'); 
    } 

    // Load the view 
    $this->data['subview'] = 'admin/page/edit'; 
    $this->load->view('admin/_layout_main', $this->data); 
} 

我看了CodeIgniter的File Upload Class。这些是我想要使用的配置,但我不知道如何将其与我的Page类型配合使用。

 $config['upload_path'] = './uploads'; 
     $config['allowed_types'] = 'pdf'; 
     $config['max_size'] = '1000000'; 
     $this->load->library('upload', $config); 

如果我能指出在如何将数据转化为我的数据库和文件进入我的目录正确的方向,我相信我能想出如何在我的视图中显示了这一切。

谢谢!

**编辑(现在的形式输出)**

<?php echo form_open(); ?> 
<table class="table"> 
    <tr> 
     <td>Parent</td> 
     <td><?php echo form_dropdown('parent_id', $pages_no_parents, $this->input->post('parent_id') ? $this->input->post('parent_id') : $page->parent_id); ?></td> 
    </tr> 
    <tr> 
     <td>Template</td> 
     <td><?php echo form_dropdown('template', array('page' => 'Page', 'news_archive' => 'News Archive', 'homepage' => 'Homepage'), $this->input->post('template') ? $this->input->post('template') : $page->template); ?></td> 
    </tr> 
    <tr> 
     <td>Title</td> 
     <td><?php echo form_input('title', set_value('title', $page->title)); ?></td> 
    </tr> 
    <tr> 
     <td>Slug</td> 
     <td><?php echo form_input('slug', set_value('slug', $page->slug)); ?></td> 
    </tr> 
    <tr> 
     <td>Body</td> 
     <td><?php echo form_textarea('body', set_value('body', $page->body), 'class="tinymce"'); ?></td> 
    </tr> 
    <tr> 
     <td>File Upload</td> 
     <td><?php echo form_upload('userfile', set_value('userfile', $page->userfile)) ?></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><?php echo form_submit('submit', 'Save', 'class="btn btn-primary"'); ?></td> 
    </tr> 
</table> 
<?php echo form_close();?> 
+0

你究竟是什么尝试上传,即时混淆。你能清除那个吗?你提交表单吗?如果是这样,表单是否具有'file'类型的输入?你能提供HTML吗? – CodeGodie

+0

我想添加一个文件上传字段来上传并在页面上显示PDF文件的链接。 – mrtonyb

+0

好的,到目前为止,我看到您正在保存表单的帖子值。您想要在保存方法之后还是之前上载PDF?另外,你可以提供HTML吗?这会告诉我们,如果你正在设置你的表单以正确的方式抓取你想上传的文件 – CodeGodie

回答

0

我不知道,但添加此代码之前保存记录。

$this->load->library('upload', $config); 
$this->upload->initialize($config);        
if(!$this->upload->do_upload('userfile'))      
{ 
    $error = array('error' => $this->upload->display_errors()); 
    $this->load->view('upload_form', $error);      
} 
else 
{ 
    $data = array('upload_data' => $this->upload->data());   
    //do stuff 
} 
0

在你的HTML,请确保您更改此:

<?php echo form_open(); ?> 

这样:

<?php echo form_open_multipart();?> 

为了让PHP读取$_FILES您提交。一旦你这样做,像这样处理上传:

$this->load->library('upload'); 
$config['upload_path'] = './uploads'; 
$config['allowed_types'] = 'pdf'; 
$config['max_size'] = '1000000'; 
$this->upload->initialize($config); 
if ($this->upload->do_upload("userfile")) { 
    //your success code 
    $upload_data = $this->upload->data(); 
    $data_to_save['file_name'] = $upload_data['file_name']; 
} else { 
    //your failure code 
    var_dump($this->upload->display_errors()); 
} 
相关问题