簡體   English   中英

將圖片和視頻上傳設為可選

[英]Make image and video upload optional

我在codeigniter中有一個小應用程序。 有一個包含3個文本字段的表單,名稱,電子郵件,位置。 這足以提交。 但是,有兩個可選字段供所有用戶提交圖像或視頻或同時提交。 我一直在工作,直到上傳的文件出現錯誤。 當我希望它停止整個提交直到錯誤修復時,它仍將提交文本數據。

這是我控制器的代碼。 任何幫助都會很棒。 謝謝!

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Form extends MY_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->helper(array('form', 'url'));
}

function index()
    {
        $this->load->helper(array('form', 'url'));

        $this->load->library('form_validation');

        $this->form_validation->set_rules('nominee', 'Nominee', 'required');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
        $this->form_validation->set_rules('location', 'Location', 'required');

        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('form');
        }
        else
        {
             // Load the library - no config specified here
                $this->load->library('upload');

                // Check if there was a file uploaded - there are other ways to
                // check this such as checking the 'error' for the file - if error
                // is 0, you are good to code
                if (!empty($_FILES['imageupload']['name']))
                {
                    // Specify configuration for File 1
                    $config['upload_path'] = 'uploads/images';
                    $config['allowed_types'] = 'gif|jpg|png';
                    $config['max_size'] = '100';
                    $config['max_width']  = '1024';
                    $config['max_height']  = '768';       

                    // Initialize config for File 1
                    $this->upload->initialize($config);

                    // Upload file 1
                    if ($this->upload->do_upload('imageupload'))
                    {
                        $data = $this->upload->data();
                    }
                    else
                    {
                        echo $this->upload->display_errors();
                    }

                }

                // Do we have a second file?
                if (!empty($_FILES['videoupload']['name']))
                {
                    // Config for File 2 - can be completely different to file 1's config
                    // or if you want to stick with config for file 1, do nothing!
                    $config['upload_path'] = 'uploads/videos/';
                    $config['allowed_types'] = 'gif|jpg|png';
                    $config['max_size'] = '100';
                    $config['max_width']  = '1024';
                    $config['max_height']  = '768';

                    // Initialize the new config
                    $this->upload->initialize($config);

                    // Upload the second file
                    if ($this->upload->do_upload('videoupload'))
                    {
                        $data = $this->upload->data();
                    }
                    else
                    {
                        echo $this->upload->display_errors();
                    }

                }

            $this->load->view('thankyou');
            //Run code to add into the database
        }
    }

}

將所有上傳數據邏輯放入自定義驗證回調中

然后,如果驗證失敗(包括上傳),頁面將返回到表單,並在其中預先填寫數據-您的用戶可以修復文件上傳。

然后,您的控制器邏輯也會被簡化。

    $this->load->library('form_validation');

    $this->form_validation->set_rules('nominee', 'Nominee', 'required');
    $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
    $this->form_validation->set_rules('location', 'Location', 'required');
    $this->form_validation->set_rules('imageupload', 'Image Upload', 'callback__image_upload');
    $this->form_validation->set_rules('videoupload', 'Video Upload', 'callback__video_upload');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('form');
    }
    else
    {
        //Run code to add into the database
        $this->load->view('thankyou');
    }

function _video_upload()
{
   //put upload logic here and check if its valid
}

function _image_upload()
{
   //put upload logic here and check if its valid
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM