我有一个上传文件的脚本使用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>
如果我想在没有提交按钮的情况下上传它,我该怎么办?
答案 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>");
}
});
您将需要一个名为'在您的'画廊'控制器上传的功能!