使用ThinkPHP实现附件上传

刚学的使用ThinkPHP框架简单上传附件(图片,文档,视频等文件)

首先需要了解tp框架中Upload.class.php(ThinkPHP/Library/Think/Upload,class,php)中的几个函数

1:getError() 获取上传错误信息

2:uploadOne() 上传单个文件

3:upload() 上传多个文件

4:rootPath 上传文件保存根路径

代码如下

前台:

<td>商品图片</td>
<td>
    <input type="file" name="goods_pic" />
</td>

控制器

//处理上传附件图片

        //判断是否上传  4:没有上传附件
        if ($_FILES[‘goods_pic‘][‘error‘]<4) {

          //上传
          $cfg = array(
            ‘rootPath‘ => ‘./Public/uploads/‘, //保存根路径
          );
          $upload = new \Think\Upload($cfg);  //完全限定名称 实例化对象  
          //uploadOne()方法执行成功后会把附件(在服务器上)的名字和路径等相关信息返回
          $file_info=$upload->uploadOne($_FILES[‘goods_pic‘]);

          //把上传好的附件存到数据库  拼接路径
          //$upload->rootPath通过父类upload.class.php中的__get()方法获取配置中的rootPath
          $_POST[‘goods_big_img‘]=$upload->rootPath.$file_info[‘savepath‘].$file_info[‘savename‘];
        }

如果对上传附件有其他要求,可参考父类Upload.class.php中上传配置config参数进行选择需要的参数,只需在上面代码$cfg=array()中重写即可!

父类上传配置参数如下(可根据自己要求重写):

private $config = array(
        ‘mimes‘         =>  array(), //允许上传的文件MiMe类型
        ‘maxSize‘       =>  0, //上传的文件大小限制 (0-不做限制)
        ‘exts‘          =>  array(), //允许上传的文件后缀
        ‘autoSub‘       =>  true, //自动子目录保存文件
        ‘subName‘       =>  array(‘date‘, ‘Y-m-d‘), //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组
        ‘rootPath‘      =>  ‘./Uploads/‘, //保存根路径
        ‘savePath‘      =>  ‘‘, //保存路径
        ‘saveName‘      =>  array(‘uniqid‘, ‘‘), //上传文件命名规则,[0]-函数名,[1]-参数,多个参数使用数组
        ‘saveExt‘       =>  ‘‘, //文件保存后缀,空则使用原后缀
        ‘replace‘       =>  false, //存在同名是否覆盖
        ‘hash‘          =>  true, //是否生成hash编码
        ‘callback‘      =>  false, //检测文件是否存在回调,如果存在返回文件信息数组
        ‘driver‘        =>  ‘‘, // 文件上传驱动
        ‘driverConfig‘  =>  array(), // 上传驱动配置
    );
时间: 2024-08-01 22:22:37

使用ThinkPHP实现附件上传的相关文章

thinkphp中附件上传

上传后的页面显示: 上传的基础过程 将上传路径存入数据库中 结合自己的项目所写:(学生上传实践分的证明资料)

thinkphp实现附件上传

先需要制定图片上传的目录 然后用uploadOne方法保存 有的时候需要缩略图,比如文章的封面图片 $config=array( 'rootPath' => './Application/Public/',//根路径 'savePath' => 'upload/', ); $upload=new \Think\Upload($config); $z=$upload->uploadOne($_FILES['goods_img']); if(!$z){ show_bug($upload-&g

基于thinkphp的uploadify上传图功能

php Action server端 <?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * Description of UploadAction * * @author hxwj */ class UploadAction extends CommonAction{ public function _initialize(){ //

基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

很久之前,当我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中如何使用这个组件进行文件上传的,当时上传文件的处理主要也是使用ashx一般处理程序来进行处理的.本文主要介绍我的Web开发框架中,在MVC4的环境中如何集成这个非常棒的文件上传组件的. 1.上传组件uploadify的说明及脚本引用 Uploadify 是 JQuery 一个著名的上传插件,利用 Flash

基础资料功能开发(附件上传、查看,获取当前用户信息、时间)

1.数据库建表.SYS_MODULE挂菜单.给菜单添加权限 2.创建Action.Dao.model.service... 3.struts-aqxx.xml配置 <action name="zlaqJczl/*" method="{1}" class="com.tech15.aqxx.action.ZlaqJczlAction"> <result name="*" type="direct&quo

基于MVC4+EasyUI的Web开发框架形成之旅(4)--附件上传组件uploadify的使用

大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中如何使用这个组件进行文件上传的,当时上传文件的处理主要也是使用ashx一般处理程序来进行处理的.本文主要介绍我的Web开发框架中,在MVC4的环境中如何集成这个非常棒的文件上传组件的. 1.上传组件uploadify的说明及脚本引用 Uploadify 是 JQuery 一个著名的上传插件,利用 Flash

ThinkPHP之文件上传

在项目当中,我们有的时候需要上传图片的功能,简单的从面相过程的方法是相对较为复杂的,要一步一步的来,如果用框架的话,相对就简单了许多,主要就是方法以及每一个变量所代表的意义,然后就是一些注意的地方了. 首先,从视图页面说起,要先做好文件的上传表单控件,这里我就出现了一个错误,没有加上文件的特有属性而导致控制器取不到文件,如下所示一个简单的界面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

如何解决控件附件上传时超大附件无法上传的问题

起因: 我们的附件控件里边,一般情况下默认设置大小为10M,如果我们设置30M的情况,就无法满足上传了. 原因: 是因为我们ajax的一个文件里取我们控件自定义大小的值,无法取到.因为我们传的int类型的值,所以我们在用QueryString取的时候的值为Null. 解决: 打开Portal->Ajax->FileUploadHandler.ashx文件里,找到以下代码: Protected int MaxSize { get { if (!int.TryParse(Request.Query

thinkphp表单上传文件并将文件路径保存到数据库中

上传单个文件,此文以上传图片为例,上传效果如图所示 创建数据库upload_img,用于保存上传路径 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` te