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


how to upload file in codeigniter without submit button?

我有一个脚本可以使用codeigniter上传文件,但它仍然使用提交按钮。我想在不点击提交的情况下上传。这是我的脚本:

controllers/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();
  }
}

*views/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>

如果我想在没有提交按钮的情况下上传,我该怎么办?

为了能够上传文件,您需要在刚浏览文件时触发一些JavaScript函数。下面的代码可能会帮助您使用JQueryAJAX库来实现这一点。

$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>");
    }
});

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

相关文章: