ajaxForm使用codeigniter插入图像到图像文件夹不工作

时间:2015-05-07 05:47:49

标签: codeigniter ajaxform

您好我有这个表单,我使用ajaxForm在images文件夹中提交我的图像。当我试图上传图片时,我已经有了ajaxForm的库,我注意到我上传的图片不会上传到assets / uploads文件夹我试过print_r路径但它显示图像的文件名但不会插入到assets / uploads文件夹在这里是我的视图

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
  <script src="http://malsup.github.com/jquery.form.js"></script> 
  <script> 
      jQuery(document).ready(function($){
          $("#uploadPhoto").change(function(){
                var val = $(this).val();
                switch(val.substring(val.lastIndexOf('.') + 1).toLowerCase()){
                  case 'gif': case 'jpg': case 'png': case 'jpeg':
                   $("#ptxt").fadeOut();
                   $("#buttonGallery").show();
                  break;
                  default:
                    $(this).val('');
                    // error message here
                    $("#ptxt").fadeIn();
                    $("#buttonGallery").hide();
                    break;
                }
              }); 

              $('#send_form').ajaxForm({  
                  target: '.result',
                  success: function(data) {

                  }      
              }); 


      });



    </script> 



<form id="send_form" enctype="multipart/form-data" action="<?php echo base_url().'admin/rooms/addGallery'?>" method="post" >                          
                          <div class="row">
                            <div class="col-md-4">
                              <div><h3>Gallery</h3></div>
                                                            <div class="alert alert-danger" id="ptxt">
                                                                <p>Invalid file type</p>
                                                            </div>
                              <div class="form-group">
                                <label for="uploadPhoto">Upload photo</label>
                                <input type="file" name="uploadPhoto" id="uploadPhoto" placeholder="Enter ">
                              </div>
                              <div class="form-group">
                                <label for="photoTitle">Photo title</label>
                                <input type="text" name="photoTitle" class="form-control" id="photoTitle" placeholder="Photo title " >
                              </div>
                              <div class="form-group">
                                <label for="photoDescription">Photo description</label>
                                <textarea name="photoDescription" class="form-control" id="photoDescription" placeholder="Photo description " rows="5"></textarea>
                              </div>                                                            
                            </div>                            
                          </div>
                                                    <input type="hidden" name="galleryId" id="galleryId" value="<?php echo $getRoomDetails->id; ?>">
                          <button type="submit" name="buttonGallery" id="buttonGallery" class="btn btn-primary">Save</button>
                        </form>

我的控制器

public function addGallery(){
        if($this->upload->do_upload('uploadPhoto')){
            $data['upload_data'] = $this->upload->data();          

            $uploadSuccess = $data['upload_data'];

            $raw_name = $uploadSuccess['file_name'];

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

            $file_name = $raw_name;

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

            $image_path = 'assets/uploads/' .$file_name;
            echo $image_path; exit;
            $config['image_library'] = 'gd2';
            $config['source_image'] =  $image_path;
            $config['create_thumb'] = FALSE;
            $config['maintain_ratio'] = TRUE;
            $config['width'] = 150;
            $config['height'] = 110;
            $config['new_image'] = 'thumb_'.$file_name;
            $this->image_lib->initialize($config);
            $this->image_lib->resize();
            $this->image_lib->clear();
        }


    }

我在public function __construct中添加了一个配置,以确保

public function __construct(){
        parent::__construct();
         $config['upload_path'] = 'assets/uploads/';
    // set the filter image types
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '9000';
    $config['encrypt_name']  = TRUE;

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

    $this->upload->initialize($config);
    $this->upload->set_allowed_types($config['allowed_types']);
    $data['upload_data'] = '';


    }

有人可以帮我解决这个问题吗?TIA

2 个答案:

答案 0 :(得分:0)

尝试为您的

提供完整路径
  

$配置[ 'upload_path']

我相信您需要提供完整路径才能保存图像。要获得完整路径,您可以使用函数

  

getcwd()

获取当前的工作目录,并且需要连接文件夹的剩余部分。

在加载帮助程序之前,还要初始化配置数组。

答案 1 :(得分:0)

您的控制器文件存在问题

在配置设置之前上传文件

您的控制器代码将是

<?php
public function addGallery(){
$data['upload_data'] = $this->upload->data();

$uploadSuccess = $data['upload_data'];

$raw_name = $uploadSuccess['file_name'];

$image_path = 'assets/uploads/' . $file_name;
 $config['upload_path'] = 'assets/uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

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

if (!$this->upload->do_upload()) {
    $error = array('error' => $this->upload->display_errors());

    $this->load->view('upload_form', $error);
} else {
    $data['upload_data'] = $this->upload->data();          

            $uploadSuccess = $data['upload_data'];
            $raw_name = $uploadSuccess['file_name'];
            $file_name = $raw_name;
            $this->load->library('image_lib');

            $image_path = 'assets/uploads/' .$file_name;
            $config['image_library'] = 'gd2';
            $config['source_image'] =  $image_path;
            $config['create_thumb'] = FALSE;
            $config['maintain_ratio'] = TRUE;
            $config['width'] = 150;
            $config['height'] = 110;
            $config['new_image'] = 'thumb_'.$file_name;
            $this->image_lib->initialize($config);
            $this->image_lib->resize();
            $this->image_lib->clear();
}
}

并从控制器构造函数中删除上传部分