【thinkphp3.1手册】ThinkPHP3.1实现文件上传(支持多文件上传)

时间:2017-12-26  来源:thinkphp  阅读:

上传表单
上传表单无需特别处理,下面是一个最简单的单文件上传表单:

 注意,表单必须添加enctype="multipart/form-data"属性才能支持文件上传功能。

 代码如下





上传操作
接下来就是定义上传操作了,我们在Action控制器中添加upload操作方法如下:

要使用上传功能,首先第一步就是实例化上传类:

 代码如下

import("ORG.Net.UploadFile");

$upload = new UploadFile();// 实例化上传类

//参数设置

//设置附件上传目录
$upload->savePath = "./Uploads/";
//设置需要生成缩略图,仅对图像文件有效
$upload->thumb = true;
//设置需要生成缩略图的文件后缀
$upload->thumbPrefix = "m_,s_";  //生产2张缩略图
//设置缩略图最大宽度
$upload->thumbMaxWidth = "200,50";
//设置缩略图最大高度
$upload->thumbMaxHeight = "200,50";

//文件上传代码

public function upload() {
    import("ORG.Net.UploadFile");
    $upload = new UploadFile();// 实例化上传类
    $upload->maxSize  = 3145728 ;// 设置附件上传大小
    $upload->allowExts  = array("jpg", "gif", "png", "jpeg");// 设置附件上传类型
    $upload->savePath =  "./Public/Uploads/";// 设置附件上传目录
    if(!$upload->upload()) {// 上传错误提示错误信息
        $this->error($upload->getErrorMsg());
    }else{// 上传成功
        $this->success("上传成功!");
    }
}

注意只支持php文件哦,其它类型的文件会提示非法文件的。

上面讲到的是单文件上传,如果要多文件上传我们只要简单的对表单进行处理

多文件上传

表单如下写法

 代码如下



或者像原生态php多文件上传的写法



php处理方法还是单文件上传的没什么变化

 代码如下

import("ORG.Net.UploadFile");
$upload = new UploadFile();
foreach ($_FILES as $key=>$file){
    if(!empty($file["name"])) {
        $upload->autoSub = true;
        $upload->subType   =  "date";
        $info =  $upload->uploadOne($file);
        if($info){ // 保存附件信息
            M("Photo")->add($info);
        }else{ // 上传错误
            $this->error($upload->getErrorMsg());
        }
    }
}

最新版本的上传类包含的功能如下(有些功能需要结合ThinkPHP系统其他类库):
基本上传功能
支持批量上传
支持生成图片缩略图
自定义参数上传
上传检测(包括大小、后缀和类型)
支持覆盖方式上传
支持上传类型、附件大小、上传路径定义
支持哈希或者日期子目录保存上传文件
支持动态定义子目录保存文件
上传图片的安全性检测
支持上传文件命名规则
支持对上传文件的Hash验证

【thinkphp3.1手册】ThinkPHP3.1实现文件上传(支持多文件上传)

http://m.bbyears.com/jiaocheng/38039.html

推荐访问:thinkphp3 1 3
相关阅读 猜你喜欢
本类排行 本类最新