图片上传问题->错误和成功消息CI


image upload problem -> Errors and success messages CI

我有以下代码,我刚刚发现我可以上传任何类型的文件(.png.jpg .txt等),但我也不确定是否放置$data[success] = TRUE,以便在页面重新加载并运行函数后显示。如果有错误,我该如何处理错误消息呢?

控制器:

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Addimage extends CI_Controller { 
    function __construct(){ 
    parent::__construct(); 
    } 
    function index() { 
    if(!$this->session->userdata('logged_in')) { 
        redirect('admin/home'); 
    } 
    // Main Page Data 
    $data['cms_pages'] = $this->navigation_model->getCMSPages(); 
    $data['title'] = 'Add Gallery Image'; 
    $data['content'] = $this->load->view('admin/addimage',NULL,TRUE); 
    $this->load->view('admintemplate', $data); 
    //Set Validation 
    //$this->form_validation->set_rules('userfile', 'userfile', 'trim|required'); 
    $this->form_validation->set_rules('description', 'Description', 'trim|required'); 
    if($this->form_validation->run() === TRUE) { 
    //Set File Settings 
    $config['upload_path'] = 'includes/uploads/gallery/'; 
    $config['allowed_types'] = 'jpg|png'; 
    $config['remove_spaces'] = TRUE;
    $config['overwrite'] = TRUE;
    $config['max_size'] = '100'; 
    $config['max_width'] = '1024'; 
    $config['max_height'] = '768'; 
    $this->load->library('upload', $config); 
    if(!$this->upload->do_upload()) {
    $error = array('imageError' => $this->upload->display_errors());
    }
    else{
    $data = array('upload_data' => $this->upload->data());
    $data['success'] = TRUE;
    $config['image_library'] = 'GD2';
    $config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
    $config['new_image'] = 'includes/uploads/gallery/thumbs/';
    $config['create_thumb'] = 'TRUE';
    $config['thumb_marker'] ='_thumb';
    $config['maintain_ratio'] = 'FALSE';
    $config['width'] = '200';
    $config['height'] = '150';
    $this->load->library('image_lib', $config);
    $this->image_lib->resize();
    }
    $file_info = $this->upload->data();
    $data = array(   
        'description' => $this->input->post('description', TRUE), 
        'imagename' => $file_info['file_name'],
    'thumbname' =>$file_info['raw_name'].'_thumb'.$file_info['file_ext'] 
        ); 
    $this->image_model->addImage($data);
    } 
 } 
}

视图:

<?php
//Setting form attributes
$formAddImage = array('id' => 'addImage', 'name' => 'addImage');
$imageImage = array('id' => 'userfile', 'name' => 'userfile', 'placeholder' => 'File Location*');
$imageDescription = array('id' => 'description','name' => 'description','placeholder' => 'Image Description*');
if($success == TRUE) {
echo '<section id = "validation">Image Uploaded</section>'; 
}

?>

<section id = "validation"><?php echo validation_errors();?></section>

<?php
echo form_open_multipart('admin/addimage', $formAddImage);
echo form_fieldset();
echo form_upload($imageImage);
echo form_textarea($imageDescription);
echo form_submit('submit','Submit');
echo form_fieldset_close();
echo form_close();
?>
if(!$this->upload->do_upload()) {
    $status = array('imageError' => $this->upload->display_errors());
}
else 
{
    $status = 'Success message'; // or just true
    // etc
}

then in your view:

if($status==TRUE) 
{ 
    // your success
} 
else 
{
   // aw..somethings's gone wrong, print_r($status);
{

使用一个变量

这也是一个很好的例子,说明什么时候使用flashdata,这正是为了这些目的。

if(!$this->upload->do_upload()) 
{
    $this->session->set_flashdata('message', 'Sorry, error...');
} 
else 
{
    $this->session->set_flashdata('message', 'Success!');
}

如果需要的话,你当然可以把你的数据数组传递给set_flashdata