codeigniterに小さなアプリがあります。名前、メール、場所の3つのテキストフィールドを持つフォームがあります。提出するにはこれで十分です。ただし、画像またはビデオ、あるいはその両方を送信するために、すべてのユーザーに2つのオプションのフィールドがあります。アップロードされたファイルにエラーが発生するまで、動作させています。エラーが修正されるまで送信全体を停止したい場合でも、テキストデータは送信されます。
これが私のコントローラーからのコードです。どんな助けでも素晴らしいでしょう。ありがとう!
<?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
}
}
}