【发布时间】: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>
【问题讨论】:
-
试过不行。
-
您的表单有代码吗?澄清一下,检查
POST变量不是一种选择? -
我在原帖中添加了示例视图
标签: php codeigniter