我有一个脚本可以使用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>");
}
});
你将需要一个名为"上传"的功能在你的"画廊"控制器!