ThinkPHP框架是PHP领域广泛使用的开源轻量级MVC框架,它提供了一套快速开发Web应用和API服务的方法论。在开发过程中,上传文件并将文件路径保存到数据库是常见的需求,尤其在处理图像、文档等文件时。本文将详细介绍如何在ThinkPHP框架下实现表单文件上传,并将文件路径保存到数据库中。 我们需要创建一个数据库表来保存文件信息。在本例中,我们创建了一个名为`seminar_upload_img`的数据库表,它包含如下字段:`id`作为主键,`img_name`保存文件名称,`img_url`保存文件路径,`create_time`记录文件上传的时间。以下是创建表的SQL语句: ```sql CREATE TABLE `seminar_upload_img` ( `id` int(11) NOT NULL AUTO_INCREMENT, `img_name` varchar(255) DEFAULT NULL COMMENT '图片名称', `img_url` varchar(255) DEFAULT NULL COMMENT '图片路径', `create_time` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; ``` 接下来,在ThinkPHP的公共配置文件`Common/Conf.php`中配置数据库连接信息,确保应用程序能够连接到数据库。同时,配置文件上传的根路径,这将用于存放上传的文件: ```php return array( 'DB_TYPE' => 'mysql', 'DB_HOST' => '***.*.*.*', 'DB_NAME' => 'seminar', 'DB_USER' => 'root', 'DB_PWD' => 'root', 'DB_PORT' => 3306, 'DB_PREFIX' => 'seminar_', 'DB_CHARSET' => 'utf8', 'SHOW_PAGE_TRACE' => true, 'TMPL_PARSE_STRING' => array( '__UPLOAD__' => __ROOT__ . '/Public/Uploads', ), ); ``` 在视图文件`Upload/index.html`中,设计了包含文件上传表单的HTML结构。表单设置了`enctype="multipart/form-data"`以支持文件上传,并且指定了上传动作的URL。表单内包含一个文件选择输入和一个提交按钮: ```html <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <style type="text/css"> #img{height:22px;border:#0002pxsolid} #button{height:30px;width:100px;} </style> </head> <body> <div><notemplyname="data"> <img src="__UPLOAD__/{$data['img_url']}" width="200" height="100"/> </notemply></div> <div class="result">上传允许文件类型:'jpg','gif','png','jpeg'</div><br> <form action="{:U('upload/Upload')}" method="post" enctype="multipart/form-data"> <input type="file" name="image"/> <input type="submit" value="上传" id="button"> </form> </body> </html> ``` 在控制器`UploadController.class.php`中实现文件上传的逻辑。控制器包含两个方法:`index()`用于显示上传表单,`upload()`用于处理文件上传逻辑。在`upload()`方法中,首先创建了一个`Think\Upload`类的实例,并配置了文件上传的各种参数,比如允许的最大文件大小、文件类型、上传目录和保存规则等: ```php namespace Home\Controller; use Think\Controller; class UploadController extends Controller { public function index() { $img = M('upload_img'); $sel = $img->order('create_time desc')->find(); $this->assign('data', $sel); $this->display(); } public function upload() { $upload_img = M('upload_img'); if (!empty($_FILES)) { //上传单个图像 $upload = new \Think\Upload(); // 实例化上传类 $upload->maxSize = 1 * 1024 * 1024; // 设置附件上传大小限制为1MB $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型 $upload->rootPath = 'Public/Uploads/'; // 设置附件上传根目录 $upload->savePath = ''; // 设置附件上传子目录 $upload->saveName = array('uniqid', ''); // 上传文件的保存规则 $upload->autoSub = true; // 自动使用子目录保存上传文件 $upload->subName = array('date', 'Ym'); if (!$upload->upload()) { // 如果上传失败,则返回错误信息 $this->error($upload->getError()); } else { // 保存文件信息到数据库 $info = $upload->getSavedFile(); $upload_img->add(array( 'img_name' => $info['file_name'], // 文件名 'img_url' => $info['savepath'] . $info['file_name'], // 文件完整路径 'create_time' => $info['save_time'] // 上传时间 )); } } $this->success('上传成功!'); } } ``` 在`upload()`方法中,如果上传成功,就使用`$upload->getSavedFile()`获取上传文件的相关信息,并将文件名、文件路径和上传时间保存到数据库中。`add()`方法将新记录添加到`upload_img`模型中,完成数据的保存。 总结起来,ThinkPHP文件上传的实现涉及以下关键点: 1. 配置数据库连接和文件上传根路径; 2. 创建HTML表单和视图模板来展示上传界面; 3. 在控制器中处理表单提交,实例化文件上传类并配置相关参数; 4. 文件上传成功后,将文件信息保存到数据库中。 以上就是利用ThinkPHP框架实现表单文件上传,并将文件路径保存到数据库的详细步骤。需要注意的是,上传文件处理过程中要进行安全性检查,防止恶意文件上传导致的安全风险。





















- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网吧网络组建方案.doc
- 基因工程医学知识讲座.pptx
- 全新悲伤的网络签名唯美句子.docx
- 软件学院卓越工程师教育培养计划工作进展报告.doc
- 通用原厂诊断仪MDIGDSTISWEB使用培训.pptx
- 公司网络管理规划.docx
- 计算机专业高校生社会实践报告.docx
- 精选银行计算机实习总结报告范文.docx
- 2023年软件测试与质量保证试题参考.doc
- 通信工程概预算考试试题与答案(基础题与专业题).doc
- 医学统计学及其软件包专家讲座.pptx
- 2023年招标师项目管理与招标采购模拟试题二.doc
- 工程技术人员及项目管理人员培训需求调查表.doc
- 图书馆管理系统数据库设计(word文档良心出品).doc
- cppweb-C语言资源
- 电子商务专业毕业设计样本.doc


