首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

codeigniter上传图片存储数据库中的用户文件,而不是图片名称

CodeIgniter是一个轻量级的PHP框架,它提供了一套简单而优雅的工具和库,用于快速开发Web应用程序。在CodeIgniter中,可以通过以下步骤将用户上传的图片存储到数据库中:

  1. 配置文件:首先,需要在CodeIgniter的配置文件中设置数据库连接信息。打开application/config/database.php文件,根据你的数据库配置填写相应的信息,包括数据库类型、主机名、用户名、密码等。
  2. 创建数据库表:在数据库中创建一个表来存储用户上传的图片。可以使用以下SQL语句创建一个简单的表:
代码语言:sql
复制
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字段、一个用于存储文件名的字段和一个用于存储图片数据的字段。

  1. 控制器代码:创建一个控制器来处理图片上传的逻辑。可以在application/controllers目录下创建一个名为UploadController.php的文件,并添加以下代码:
代码语言: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表中。

  1. 视图文件:创建一个视图文件来显示图片上传表单。可以在application/views目录下创建一个名为upload_form.php的文件,并添加以下代码:
代码语言:html
复制
<!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>

这个视图文件包含了一个简单的表单,用于选择要上传的图片文件。

  1. 路由配置:最后,需要配置路由以访问上传功能。打开application/config/routes.php文件,在$route数组中添加以下代码:
代码语言:php
复制
$route['upload'] = 'UploadController';
$route['upload/do_upload'] = 'UploadController/do_upload';

现在,当访问http://yourdomain.com/upload时,将显示图片上传表单。提交表单后,图片将被上传并存储到数据库中。

这是一个基本的示例,你可以根据实际需求进行修改和扩展。在实际应用中,还可以添加图片大小限制、文件类型验证、图片处理等功能来增强用户体验。

腾讯云相关产品推荐:

  • 对象存储(COS):腾讯云提供的高可靠、低成本的云端存储服务,适用于存储和处理用户上传的图片等文件。了解更多信息,请访问:腾讯云对象存储(COS)
  • 云数据库 MySQL 版(TencentDB for MySQL):腾讯云提供的高性能、可扩展的云数据库服务,适用于存储和管理用户上传的图片相关的数据。了解更多信息,请访问:腾讯云云数据库 MySQL 版(TencentDB for MySQL)
  • 云服务器(CVM):腾讯云提供的弹性计算服务,适用于部署和运行Web应用程序。了解更多信息,请访问:腾讯云云服务器(CVM)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于图片或者文件数据库存储方式归纳

因为图片是属于大字段。一张图片可能1m到几m。 有个原则:图片尽量不要存储数据库(是指不要二进制形式保存到字段,只保存图片路径)。这样大字段数据会加重数据库负担,拖慢数据库。...图片放在磁盘上的话,数据库存储只是图片路径。备份数据库后。磁盘上图片也要跟着备份才行。 不过我觉得,备份这个好处不是很明显。图片在磁盘上,备份磁盘也没很大事情。打包压缩也可以了。...数据库字段中保存是类似于这样子”images/2012/09/25/ 1343287394783.jpg” 原来上传图片文件名称会重新命名保存,比如按照时间戳来生成,1343287394783....这样子是为了避免文件名重复,多个人往同一个目录上传图片时候会出现。 反正用什么样规则命名图片,只要做到图片名称唯一性即可。 比如网站并发访问量大,目录生成分得月细越好。...大并发情况下和大量操作确实很麻烦。其实借鉴了当时google公布gfs设计论文。google有相册服务。为每个用户提供上传图片存储。 估计,google是率先实现这种小文件网络存储系统

9.5K20

.Net语言 APP开发平台——Smobiler学习日志:快速实现应用图片、声音等文件上传功能

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP开发平台,也许比Xamarin更方便 样式一 一、目标样式 我们要实现上图中效果,需要如下操作: 1.从工具栏上“Smobiler..._Click(object sender, EventArgs e) { resourceUploader1.Show(); } 3.修改ResourceUploader控件属性...a.MaxSelectCount属性 设置资源单次上传最大数量,默认设置为“9”,一次最多上传9张图片,如图1; b.QualityMode属性 获取或设置相机组件上传质量模式,默认设置为“Custom...”,即表示压缩上传和原图上传都支持,如图2; 若将该属性设置为“Compressed”,则表示只能压缩上传; 若将该属性设置为“Original”,则表示只能原图上传; 图1 图2 c.Uploading...Exception ex) { MessageBox.Show(ex.Message); } } 注:调用ResourceUploader控件来获取图片

50620

记一次解决CodeIgniter框架CKEditor+CKFinder图片上传问题

今天客户告知他们编辑人员在提交新闻时候,无法在编辑器(采用是CKEditor+CKFinder)中上传图片,开始我还以为图片目录权限没有写入导致,但是给予写入之后也无法解决,看来问题并不是这么简单...文章目录 隐藏 第一、检查图片上传目录路径是否正确 第二、解决"由于文件系统限制,该请求不能完成"问题 第一、检查图片上传目录路径是否正确 因为在提交图片时候会出现空白,通过源代码会发现没有这个页面...于是检查这个文件不是错了,最后发现这个程序目录写错public写成publicc,多了一个字符,我就不清楚了,原来他们是如何传图片。...第二、解决"由于文件系统限制,该请求不能完成"问题 原本以为解决好路径问题,然后就可以解决上传图片问题,但是问题不是这么就简单,在提交图片时候有看到"由于文件系统限制,该请求不能完成"错误提示。...本文出处:老蒋部落 » 记一次解决CodeIgniter框架CKEditor+CKFinder图片上传问题 | 欢迎分享

1.1K20

Codeigniter文件上传类型不匹配错误

Codeigniter文件上传类方便了我们使用PHP来处理文件上传操作,使用起来非常简单,如下: $config['upload_path'] = '....Codeigniter文件上传类型判断在 is_allowed_filetype 这个函数处理,造成这个错误主要原因是因为判断逻辑中有一个 mime 类型判断步骤。 什么是 Mime 呢?...不怀好意用户可能会把一个可执行文件后缀改成图片类型,上传成功后,如果能够获得文件地址,并且文件在可执行目录,就能够执行动态脚本,还是很危险。著名DedeCMS就很多这种漏洞。...针对不同后缀,Codeigniter会从 config/mimes.php 文件匹配POST过来数据 file_type 属性,只有一样才会校验通过,否则就会发生文件类型不匹配错误。...找到问题原因,解决起来就很方便了。我们只需要在 config/mimes.php 文件,添加对应后缀以及file_type 这样就能解决这个问题。

2.3K10

Thinkphp5框架实现图片、音频和视频文件上传功能详解

本文实例讲述了Thinkphp5框架实现图片、音频和视频文件上传功能。分享给大家供大家参考,具体如下: 首先是同步上传,最为基础上传方式,点击表单提交之后跳转那种。如下前端代码 <!...后端代码直接拿tp5官网示例代码吧: public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()- file('...formdata提交文件数据,后台代码没有太大变化,返回了提交文件链接,前端预览只能预览图片。...整体实现就是这样,作为一个常用业务场景,这个本身还有很多改进余地,比如删除已经上传文件或者校验文件是否已经上传,如果上传不能二次上传或者删除掉前面上传。...当然如果文件名称不做处理而是原名称上传,则上传之后会覆盖原文件

1.1K10

thinkphp框架表单数组实现图片批量上传功能示例

本文实例讲述了thinkphp框架表单数组实现图片批量上传功能。...分享给大家供大家参考,具体如下: 今天做一个表单数组实现图片批量上传,js不是很会,在网上找了资料改,html页面如下: <script type="text/javascript" var i =...2M图片</span "; td5.innerHTML="<strong 排序:</strong "; td6.innerHTML="<input type='text' name='px[]' value...在获取表单数组并插入<em>数据库</em>时用循环遍历并写入<em>数据库</em>: foreach($data['description'] as $key) { $data1['picid']=$fid; $data1['description...更多关于thinkPHP相关内容感兴趣<em>的</em>读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《<em>codeigniter</em>入门教程》、《CI

2.5K20

图片怎么存储数据库里「建议收藏」

存储图片数据库里一般有两种方式 将图片保存路径存储数据库文件存放在服务器路径或者ftp服务器路径) 将图片以二进制数据流形式直接写入数据库字段(base64形式),base64 图片数据库存储用途一般为...用户上传头像,文章插图,文章首页图片等等 其他方面的图片 一般存储图片有两种做法: 把图片直接以二进制形式存储数据库,一般数据库提供一个二进制字段来存储二进制数据。...数据库字段中保存是类似于这样子”images/2012/09/25/ 1343287394783.jpg” 原来上传图片文件名称会重新命名保存,比如按照时间戳来生成,1343287394783....这样子是为了避免文件名重复,多个人往同一个目录上传图片时候会出现。 反正用什么样规则命名图片,只要做到图片名称唯一性即可。 比如网站并发访问量大,目录生成分得月细越好。...为了做到图片名称唯一性不至于覆盖,生成可以在在时间戳后面继续加毫秒微秒等。总结规律是,并发访问量越大。就越精确就好了。

8.7K52

PHP学习-----Android客户端传回图片base64位码php保存到服务器和文件夹里面

最近case需要用到用户发布上传图像问题,每次发布图片数量控制在三张,可以相机拍照,可以相册选择 图片存储,我们在数据库存储是在服务器地址,一个字段存储多张图片...,第一次程序上传用户发布时间,内容,等非图片东西,返回状态码和在数据库中保存记录数(行数) 行数是用来记录接下来需要上传图片存储在第几行元数据里面的  图片字段    其中第一步上传时候...,第一次上传第一张图片时候,上传成功,也保存到服务器文件夹里,也保存到了数据库  图片字段,但是由于1<3, 后台就知道图片还没有上传完,所以反正状态码1,告诉Android客户端,你还没有上传完,...指针*/ fclose($m);//必须关闭 //如果保存文件夹里成功了,还是别忘记了还需要存储数据库相应字段啊,在数据库图片字段存储图片名,多张图片用 ,号隔开 /*将图片名插入到数据库...,并且用户不只上传一张图片时候,我们是需要在第一张图片时候给他加上逗号 3.如果当前用户上传不是第一张图片,并且  也不是最后一张图片时候 4.如果是最后一张图片,并且上传图片数量超过1张时候

1.7K40

TP3.2.3框架使用CKeditor编辑器在页面中上传图片方法分析

本文实例讲述了TP3.2.3框架使用CKeditor编辑器在页面中上传图片方法。分享给大家供大家参考,具体如下: 最近项目里要添加编辑器,以为CKeditor比较出名,所以研究了一下。。。...1、下载编辑器什么不用说了 2、修改config配置文件 config.image_previewText=' '; config.filebrowserImageUploadUrl = 'uploadFiles...'; 添加这两行代码,上面的是去除预览一堆没有用东西,下面的是上传文件方法名, 注意:::方法名是和你页面展示在一个控制器里 3、控制器里添加如下代码: //编辑器上传图片处理 public.../Uploads/img/'; // 设置附件上传根目录 // 上传单个文件 $info = $upload- uploadOne($_FILES['upload']); if( $info...,大家自主发挥一下想象吧 更多关于thinkPHP相关内容感兴趣读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter

82800

CI一些优秀实践

不要忘记在index.php文件修改 $system_folder 和 $application_folder 值,$system_folder 值应该是相对于 index.php 文件 $application_folder...可以参考CI手册上安全指南 以及 输入和安全类。也许最重要原则是在把数据提交到数据库文件系统之前检查所有用户输入。 SQL注入。...CodeIgniter文件结构 cache用以存储缓存文件codeigniter文件夹包含了CI基类CI_Base,为了兼容php4和php5,CI_Base有两个版本,其中php4版本CI_Base...index首先设置了应用程序文件名称为application,系统文件名称为system,然后做了一系列严格判断并转换为unix风格服务器绝对文件路径,具体说来定义了两个比较重要常量,APPPATH...,记录日志log_message,和引入错误页面的show_404是几个重要函数;Compat主要解决了php4和php5函数不兼容问题,constants则定义了一些读写文件权限常量。

3.3K50

客户端 session 导致安全问题

0x01 什么是客户端session 在传统PHP开发,$_SESSION变量内容默认会被保存在服务端一个文件,通过一个叫“PHPSESSID”Cookie来区分用户。...然而,并不是所有语言都有默认session存储机制,也不是任何情况下我们都可以向服务器写入文件。...所以,很多Web框架都会另辟蹊径,比如Django默认将session存储数据库,而对于flask这里并不包含数据库操作框架,就只能将session存储在cookie。...0x06 总结 我以三个案例来说明了客户端session安全问题。 上述三个问题,如果session是储存在服务器文件数据库,则不会出现。...,用户可以修改任意session 使用强健加密及签名算法,不是自己造(反例discuz)

1.7K41

CI框架实现创建自定义类库方法

另外,如果你希望在现有的类库添加某些额外功能,CodeIgniter 允许你扩展原生类, 或者你甚至可以在你 application/libraries 目录下放置一个和原生类库同名文件 完全替代它...存储位置 你类库文件应该放置在 application/libraries 目录下,当你初始化类时,CodeIgniter 会在这个目录下寻找这些类。...一旦加载,你就可以使用小写字母名称来访问你类: $this- someclass- some_method(); 初始化类时传入参数 在加载类库时候,你可以通过第二个参数动态传递一个数组数据,该数组将被传到...引用赋值允许你使用原始 CodeIgniter 对象,不是创建一个副本。...简单将你文件名改为和原生类库文件一致,CodeIgniter 就会使用它替换掉原生类库。

2.4K31
领券