我正在学习如何使用ajax和CodeIgniter上传图像的教程。但是我每次尝试运行代码时都会遇到内部服务器错误。我检查了文件夹,我认为图像上传到了但是它是空的。试着尽我所能让这件事起作用,但看起来我做不到。所以,我希望有人为我检查这些代码。
CONTROLLER
public function upload_image()
{
$data['title'] = 'Codeigniter Image upload';
$this->load->view('image_upload', $data);
}
public function ajax_upload()
{
if (isset($_FILES["image_file"]["name"])) {
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'jpeg|gif|jpg|png';
$this->load->library('upload', $config);
if (!$this->upload->do_upload('image_file')) {
echo '<p class="text-danger">'.$this->upload->display_errors().'</p>';
} else {
$data = $this->upload->data();
$config['image_library'] = 'gd2';
$config['source_image'] = './uploads/'.$data["file_name"];
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = FALSE;
$config['quality'] = '60%';
$config['width'] = 200;
$config['height'] = 200;
$config['new_image'] = './uploads/'.$data["file_name"];
// load image library
$this->load->library('image_lib', $config);
$this->image_lib->resize();
$img_data = array(
'name' => $data['file_name']
);
$this->main_model->insert_img($img_data);
echo $this->main_model->fetch_img();
}
}
}
包含表单
的视图文件<html lang="en">
<head>
<meta charset="utf-8">
<title>myschools | <?php echo $title; ?></title>
<link rel="stylesheet" href="<?php echo base_url('assets/css/bootstrap.min.css'); ?>">
<!-- <link rel="stylesheet" href="<?php //echo base_url('assets/css/custom.css'); ?>"> -->
</head>
<body>
<div class="container">
<h3 align="center"><?php echo $title; ?></h3><br>
<form class="form-inline" role="form" align="center" id="upload_form" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="sr-only" for="image_file">Select Image</label>
<input type="file" class="form-control" id="image_file" name="image_file">
</div>
<button type="submit" class="btn btn-info">Upload</button>
</form>
<br>
<br>
<br>
<div id="uploaded_image"></div>
</div>
<script src="<?php echo base_url('assets/js/jquery.min.js'); ?>"></script>
<script src="<?php echo base_url('assets/js/bootstrap.min.js'); ?>"></script>
</body>
</html>