【问题标题】:CodeIgniter Adding File Upload to Existing Edit FunctionCodeIgniter 将文件上传添加到现有的编辑功能
【发布时间】:2015-06-25 18:29:57
【问题描述】:

我是 CodeIgniter 的新手,刚刚上过 NetTuts 介绍课。 我现在正试图在我所学的基础上再接再厉。

如何将文件上传字段添加到现有页面类型?下面是我在页面控制器中的编辑功能。这是一个基本页面,包含 Title、Slug、Body、Template、Parent_ID。我将如何向其中添加文件上传数据?

我想将文档上传到“上传”目录,并将其文件路径保存到现有的页面表中。我已经在 Page 表中添加了一个“file”列。

    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 的文件上传类。这些是我想使用的配置,但我不知道如何将其集成到我的页面类型中。

        $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();?>

【问题讨论】:

  • 你到底想上传什么,我很困惑。你能澄清一下吗?你要提交表格吗?如果是这样,表单是否有类型为file 的输入?你能提供HTML吗?
  • 我想添加一个文件上传字段来上传并在页面上显示指向 PDF 文件的链接。
  • 好的,到目前为止,我看到您正在保存表单的帖子值。您想在保存方法之后还是之前上传 PDF?另外,你能提供HTML吗?这将告诉我们您是否以正确的方式设置表单以获取要上传的文件
  • 好的,我编辑了原始问题。您应该会看到表单输出信息。
  • 好的,看看我的回答

标签: php codeigniter


【解决方案1】:

我不确定,但在保存记录之前添加了此代码。

$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
}

【讨论】:

    【解决方案2】:

    在你的 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());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多