【问题标题】:Codeigniter File ValidationCodeigniter 文件验证
【发布时间】:2015-02-16 21:49:40
【问题描述】:

我想通过我的代码了解如何使我的文件上传成为必需。因为 codeigniter 表单验证集规则仅适用于 post。

我不确定如何使文件上传成为表单提交的要求,因此它会检查是否需要文件。如果文件被上传或类似的东西,让我提交表单

回调工作正常,但所需的函数无法处理文件上传。

控制器

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

class Store_add extends MX_Controller {

public function __construct() {
    parent::__construct();

    if (!$this->session->userdata('isLogged')) {
        redirect('admin');
    }

    $this->load->model('admin/setting/model_store_add');
    $this->load->model('admin/setting/model_store_get');

    $this->lang->load('admin/setting/store_add', $this->settings->get('config_admin_language'));
}

public function index() {
    // Title Language
    $this->document->setTitle($this->lang->line('heading_title'));

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

    $this->form_validation->set_rules('config_image', 'Store Image', 'callback_do_upload_image');

    if ($this->form_validation->run($this) == FALSE) { // "$this is for HMVC MY_Form_validation"

        return $this->load->view('setting/store_add.tpl');

    } else {

        $store_id = $this->model_store_add->add_store();

        $this->do_upload_image($store_id);

        $this->session->set_flashdata('success', $this->lang->line('text_success'));

        redirect('admin/setting/store');

    }

}

public function do_upload_image($store_id) {
    $config['upload_path'] = './image/upload/';
    $config['allowed_types'] = $this->settings->get('config_file_ext_allowed');
    $config['max_size'] = $this->settings->get('config_file_max_size');
    $config['overwrite'] = $this->settings->get('config_file_overwrite');
    $config['max_width'] = '*';
    $config['max_height'] = '*';

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

    if (!$this->upload->do_upload('config_image')) {

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

        $this->form_validation->set_message('do_upload_image',  $this->upload->display_errors('<b>config_image</b>' .' '));

        return false;

    } else {

        if ($store_id) {

            $this->model_store_add->add_config_image($store_id, $this->upload->data());

        } 


    }
}   
}

示例视图表单

<div class="panel-body">
<?php $data = array('id' => 'form-store-add', 'role' => 'form', 'class' => 'form-horizontal' );?>
<?php echo form_open_multipart('admin/setting/store/add', $data);?>

<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<?php echo validation_errors('<div class="alert alert-danger">', '</div>'); ?>
<?php echo $this->load->view('setting/store_flashdata.tpl');?>
</div>
</div>

<div class="form-group">
<label class="col-sm-2 control-label" for="input-image"><?php echo $entry_image; ?></label>
<div class="col-sm-10">
<input type="hidden" name="config_image" value="<?php echo set_value('config_image', '');?>">
<input type="file" name="config_image" size="20"/>
</div>
</div>

<?php echo form_close();?>

</div>

【问题讨论】:

标签: php codeigniter


【解决方案1】:

现在工作: 我对http://php.net/ 做了更多研究我已经修复了文件上传的表单验证,确保它是必需的 我添加了 is_file_upload 并添加了设置表单验证返回 false 的消息

public function do_upload_image($store_id) {
    $config['upload_path'] = './image/upload/';
    $config['allowed_types'] = $this->settings->get('config_file_ext_allowed');
    $config['max_size'] = $this->settings->get('config_file_max_size');
    $config['overwrite'] = $this->settings->get('config_file_overwrite');
    $config['max_width'] = '*';
    $config['max_height'] = '*';

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

        if (is_uploaded_file($_FILES['config_image']['tmp_name'])) {

            if (!$this->upload->do_upload('config_image')) {

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

                $this->form_validation->set_message('do_upload_image',  $this->upload->display_errors('<b>config_image</b>' .' '));

                return false;

            } else {

                if ($store_id) {

                    $this->model_store_add->add_config_image($store_id, $this->upload->data());

                }
            }

        } else {

            $this->form_validation->set_message('do_upload_image',  'Image Required');
            return false;

        }
}

【讨论】:

猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 2018-01-14
  • 2012-09-08
  • 2012-05-21
  • 2015-03-12
  • 2010-12-31
相关资源
最近更新 更多