CodeIgniter是一个轻量级的PHP框架,它提供了一套简单而优雅的工具和库,用于快速开发Web应用程序。在CodeIgniter中,可以通过以下步骤将用户上传的图片存储到数据库中:
application/config/database.php
文件,根据你的数据库配置填写相应的信息,包括数据库类型、主机名、用户名、密码等。CREATE TABLE `user_images` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`filename` varchar(255) NOT NULL,
`image_data` mediumblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这个表包含了一个自增的ID字段、一个用于存储文件名的字段和一个用于存储图片数据的字段。
application/controllers
目录下创建一个名为UploadController.php
的文件,并添加以下代码:<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class UploadController extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->database();
}
public function index()
{
$this->load->view('upload_form');
}
public function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 2048;
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile')) {
$error = $this->upload->display_errors();
// 处理上传错误
} else {
$data = $this->upload->data();
$filename = $data['file_name'];
$image_data = file_get_contents($data['full_path']);
$insert_data = array(
'filename' => $filename,
'image_data' => $image_data
);
$this->db->insert('user_images', $insert_data);
// 图片上传成功并存储到数据库
}
}
}
这个控制器包含了一个index()
方法用于显示上传表单,以及一个do_upload()
方法用于处理上传的图片。在do_upload()
方法中,首先配置了图片上传的相关参数,然后使用CodeIgniter的上传库进行图片上传。如果上传成功,将获取文件名和图片数据,并将其插入到user_images
表中。
application/views
目录下创建一个名为upload_form.php
的文件,并添加以下代码:<!DOCTYPE html>
<html>
<head>
<title>Image Upload</title>
</head>
<body>
<?php echo form_open_multipart('upload/do_upload'); ?>
<input type="file" name="userfile" size="20" />
<br /><br />
<input type="submit" value="Upload" />
</form>
</body>
</html>
这个视图文件包含了一个简单的表单,用于选择要上传的图片文件。
application/config/routes.php
文件,在$route
数组中添加以下代码:$route['upload'] = 'UploadController';
$route['upload/do_upload'] = 'UploadController/do_upload';
现在,当访问http://yourdomain.com/upload
时,将显示图片上传表单。提交表单后,图片将被上传并存储到数据库中。
这是一个基本的示例,你可以根据实际需求进行修改和扩展。在实际应用中,还可以添加图片大小限制、文件类型验证、图片处理等功能来增强用户体验。
腾讯云相关产品推荐:
云+未来峰会
618音视频通信直播系列
DBTalk
云+社区技术沙龙[第14期]
云+社区技术沙龙[第21期]
腾讯云GAME-TECH游戏开发者技术沙龙
云+社区技术沙龙[第17期]
云+社区技术沙龙[第20期]
DB TALK 技术分享会
云+社区技术沙龙[第7期]
领取专属 10元无门槛券
手把手带您无忧上云