如何在没有提交按钮的情况下在codeigniter上传文件?

时间:2013-07-28 01:48:29

标签: php codeigniter upload submit multipart

我有一个上传文件的脚本使用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 个答案:

答案 0 :(得分: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>");
    }
});

您将需要一个名为'在您的'画廊'控制器上传的功能!