[英]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.