2017-09-06 107 views
0

如何使用CodeIgniter 3上传两个不同文件夹中的图像和视频?如何使用CodeIgniter3上传两个不同文件夹中的文件?

我做了唯一的图像。请通过视频指导我。我想在两个不同的文件夹中上传图片和视频。

我的控制器,模型和视图

class Blog extends CI_Contrller{ 
     public function create_blog(){ 
      // Check Login 
      if(!$this->session->userdata('logged_in')){ 
       redirect('blogs/login'); 
      } 
      $data['title'] = 'Create Blog'; 

      $this->form_validation->set_rules('title', 'Title', 'required'); 
      $this->form_validation->set_rules('content', 'Content', 'required'); 

      if($this->form_validation->run() === FALSE){ 
       $this->load->view('templates/header'); 
       $this->load->view('blog/create_blog', $data); 
       $this->load->view('templates/footer'); 
      } else { 
       // Upload Image 
       $path = './assets/uploads/blogs/images'; 
       $config['upload_path'] = $path; 
       $config['allowed_types'] = 'gif|jpg|png'; 
       $config['max_size'] = 15000; 
       $config['max_width'] = 1024; 
       $config['max_height'] = 768; 

       $this->load->library('upload', $config); 

       if(!$this->upload->do_upload()){ 
        $this->session->set_flashdata('file_error', $this->upload->display_errors()); 
        $post_image = 'noimage.jpg'; 
        redirect('blog/create_blog'); 
       }else{ 
        $data = array('upload_data' => $this->upload->data()); 
        $post_image = $_FILES['userfile']['name']; 
       } 

       $this->M_blog->create_blog($post_image); 
       redirect('blog/view'); 
      } 
     } 
    } 

型号

 // Model Begins here                 
     public function create_blog($post_image){ 
      $slug = url_title($this->input->post('title')); 

      $data = array(
        'title' => $this->input->post('title'), 
        'slug' => $slug, 
        'content' => $this->input->post('content'), 
        'image' => $post_image 
       ); 

      return $this->db->insert('events', $data); 
     } 

查看

// View begins here                 
    <div class="container"><br> 
     <h2><?= $title ?></h2> 


     <?php echo form_open_multipart('blog/create_blog'); ?> 
     <?php echo validation_errors(); ?> 
     <?php echo $this->session->flashdata('file_error'); ?> 

      <div class="form-group"> 
      <label>Title</label> 
      <input type="text" class="form-control" name="title" 
      placeholder="Add Title"> 
     </div> 
     <div class="form-group"> 
     <label>Body</label> 
     <textarea class="form-control" id="editor1" name="content" 
      placeholder="Add Body"></textarea> 
     </div> 
    <div class="form-group"> 
     <label>Upload Image</label> 
     <input type="file" name="userfile" id="userfile" size="20" /> 
    </div> 
    <button type="submit" class="btn btn-default">Submit</button> 
    </form> 
    </div> 
+1

我猜想,你需要改变'$ path'取决于文件扩展名。你尝试过吗?你特别坚持什么? – halfer

+0

关于你(现在删除)的最后期限,请阅读[在什么情况下我想补充“紧急”或其他类似的短语我的问题,为了获得更快的答案?](// meta.stackoverflow.com/q/326569) - 总结是这不是解决志愿者问题的理想方式,并且可能对获得答案起反作用。请不要将这添加到您的问题。 – halfer

+0

请阅读[我可以问什么议题有关(http://stackoverflow.com/help/on-topic) 和[避免哪些议题(https://stackoverflow.com/help/dont-ask) 和[如何问一个很好的问题(http://stackoverflow.com/help/how-to-ask) 和[完美的问题(http://codeblog.jonskeet.uk/2010/08/29/写作最完美的 - 问题/) 以及如何创建[最小的,完整的和可验证的示例](http://stackoverflow.com/help/mcve) 和[开始浏览(HTTP://计算器。 COM /旅游) **我们很愿意帮助你解决你的代码,但我们不为你写的代码** – RiggsFolly

回答

1

试试这个

class Blog extends CI_Contrller{ 
function create_blog() { 
    // Check Login 
    if (!$this->session->userdata('logged_in')) { 
     redirect('blogs/login'); 
    } 
    $data['title'] = 'Create Blog'; 

    $this->form_validation->set_rules('title', 'Title', 'required'); 
    $this->form_validation->set_rules('content', 'Content', 'required'); 

    if ($this->form_validation->run() === FALSE) { 
     $this->load->view('templates/header'); 
     $this->load->view('blog/create_blog', $data); 
     $this->load->view('templates/footer'); 
    } else { 
     // Upload Image 


     $ext = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); 
     $ext = strtolower($ext); 
     $image_ext_arr = array('gif', 'jpg', 'png', 'jpeg'); 

     if (in_array($ext, $image_ext_arr)) { 
     $path = FCPATH.'assets/uploads/blogs/images'; 
     $allowed_types = 'gif|jpg|png'; 
     } else { 
     $path = FCPATH.'assets/uploads/blogs/video'; 
     $allowed_types = 'mp4|mp3'; 
     } 

     $config['upload_path'] = $path; 
     $config['allowed_types'] = $allowed_types; 
     $config['max_size'] = 15000; 
     $config['max_width'] = 1024; 
     $config['max_height'] = 768; 

     $this->load->library('upload', $config); 

     if (!$this->upload->do_upload()) { 
     $this->session->set_flashdata('file_error', $this->upload->display_errors()); 
     $post_image = 'noimage.jpg'; 
     redirect('blog/create_blog'); 
     } else { 
     $data = array('upload_data' => $this->upload->data()); 
     $post_image = $_FILES['userfile']['name']; 
     } 

     $this->M_blog->create_blog($post_image); 
     redirect('blog/view'); 
    } 
    } 
} 

添加几行:

$ext = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); //to find whether is image or video 
     $ext = strtolower($ext);// some time extension in upper later so converted into small letters 
     $image_ext_arr = array('gif', 'jpg', 'png', 'jpeg'); //give here all extension of image that you want to upload 

     if (in_array($ext, $image_ext_arr)) { //if matches means is image 
     $path = FCPATH.'assets/uploads/blogs/images'; 
     $allowed_types = 'gif|jpg|png'; 
     } else { //else video 
     $path = FCPATH.'assets/uploads/blogs/video'; 
     $allowed_types = 'mp4|mp3'; 
     } 

注:不如给绝对路径,而不是相对路径来上传所以

$path = FCPATH.'assets/uploads/blogs/video'; 
+0

谢谢!如果您的代码对您有所帮助,请使用 – flixy

+0

。 –

+0

肯定@vijaysharma – flixy

相关问题