2013-07-28 71 views
0

我有一个脚本来上传文件使用codeigniter,但它仍然使用提交按钮。我想上传而不点击提交。这是我的脚本:如何在没有提交按钮的情况下在codeigniter中上传文件?

控制器/ gallery.php

<?php 
class Gallery extends CI_Controller{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    function index(){ 
     $this->load->model('MGallery'); 
     if($this->input->post('upload')){ 
      $this->MGallery->do_upload(); 
     } 

    $this->load->view('gallery_view'); 
    } 
} 
?> 

型号/ mgallery.php

<?php 
class MGallery extends CI_Model{ 

var $gallery_path; 

public function __construct() 
{ 
    parent::__construct(); 
    $this->gallery_path = realpath(APPPATH . '../images'); 
} 

function do_upload(){ 
    $config = array(
     'allowed_types'=>'jpg|jpeg|gif|png', 
     'upload_path' => $this->gallery_path, 
     'max_size' => 2000 
    ); 

    $this->load->library('upload',$config); 
    $this->upload->do_upload(); 
    $image_data = $this->upload->data(); 

    $config = array(
     'source_image'=> $image_data['full_path'], 
     'new_image'=>$this->gallery_path . '/thumbs', 
     'maintain_ration'=>true, 
     'width'=>160, 
     'height'=>120 
    ); 

    $this->load->library('image_lib', $config); 
    $this->image_lib->resize(); 
    } 
} 

*意见/ gallery_view.php *

<!DOCTYPE HTML> 

<html lang="en-US"> 

    <head> 
     <title>Gallery With CI</title> 
     <meta charset="UTF-8"> 
    </head> 
    <body> 
     <div id="gallery"> 
     </div> 

     <div id="upload"> 

      <?php echo form_open_multipart('gallery'); ?> 
      <?php echo form_upload('userfile');?> 

      <?php echo form_submit('upload','Upload'); ?> 
      <?php echo form_close(); ?> 

     </div> 
</body> 

如果我想让它上传而不提交按钮,我该怎么办?

回答

1

为了能够上传您的文件,您需要在浏览文件时触发一些JavaScript功能。以下代码可能会帮助您使用JQuery AJAX库进行此操作。

$upload_field_info = array('class' => 'file_upload', 'id' => 'file_upload', 'name' => 'file_upload'); 
echo form_input($upload_field_info); 

编写JavaScript函数在您的视图:

$('#file_upload').change(function(){ 
var upload_data = $('#file_upload').val() 
var post_url = "<?php echo base_url();?>index.php/gallery/upload"; 
$.ajax({ 
    type: "POST", 
    url: post_url, 
    data: upload_data, 
    datatype: "json", 
    success: function(data) 
    { 
     $('#upload_result_div').html("<span class=success>File Uploaded!</span>"); 
    } 
}); 

你将需要一个名为“上传你的‘库’控制器功能!

+0

你会给我更详细的脚本在每个模型,视图,控制器? 我已经尝试上面的解决方案,但我上传的图像没有存储在目标文件夹中。 对不起,我还是新手.. – dyn

相关问题