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

时间:2011-04-24 01:45:56

标签: php codeigniter validation

我有以下代码,我刚刚发现我可以上传任何类型的文件(.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();
?>

1 个答案:

答案 0 :(得分:1)

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

    $status = array('imageError' => $this->upload->display_errors());
}
else 
{
    $status = 'Success message'; // or just true
    // etc
}

然后在你看来:

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