当前位置 主页 > 服务器问题 > Linux/apache问题 >

    TP3.2.3框架文件上传操作实例详解

    栏目:Linux/apache问题 时间:2020-01-23 20:30

    本文实例讲述了TP3.2.3框架文件上传操作。分享给大家供大家参考,具体如下:

    上传表单

    在ThinkPHP中使用上传功能无需进行特别处理。例如,下面是一个带有附件上传的表单提交:

    <form action="__URL__/upload" enctype="multipart/form-data" method="post" >
    <input type="text" name="name" />
    <input type="file" name="photo" />
    <input type="submit" value="提交" >
    </form>
    
    

    注意,要使用上传功能 你的表单需要设置 enctype="multipart/form-data"

    多文件上传支持

    如果需要使用多个文件上传,只需要修改表单,把

    <input type='file' name='photo'>
    
    

    改为

    <input type='file' name='photo1'>
    <input type='file' name='photo2'>
    <input type='file' name='photo3'>
    
    

    或者

    <input type='file' name='photo[]'>
    <input type='file' name='photo[]'>
    <input type='file' name='photo[]'>
    
    

    两种方式的多附件上传系统的文件上传类都可以自动识别。

    上传操作

    ThinkPHP文件上传操作使用Think\Upload类,假设前面的表单提交到当前控制器的upload方法,我们来看下upload方法的实现代码:

    public function upload(){
    $upload = new \Think\Upload();// 实例化上传类
    $upload->maxSize = 3145728 ;// 设置附件上传大小
    $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
    $upload->rootPath = './Uploads/'; // 设置附件上传根目录
    $upload->savePath = ''; // 设置附件上传(子)目录
    // 上传文件
    $info = $upload->upload();
    if(!$info) {// 上传错误提示错误信息
    $this->error($upload->getError());
    }else{// 上传成功
    $this->success('上传成功!');
    }
    }
    
    

    上传类对图片文件的上传安全做了支持,如果企图上传非法的图像文件,系统会提示 非法图像文件。 为了更好的使用上传功能,建议你的服务器开启finfo模块支持

    上传参数

    在上传操作之前,我们可以对上传的属性进行一些设置,Upload类支持的属性设置包括:

    属性 描述
    maxSize 文件上传的最大文件大小(以字节为单位),0为不限大小
    rootPath 文件上传保存的根路径
    savePath 文件上传的保存路径(相对于根路径)
    saveName 上传文件的保存规则,支持数组和字符串方式定义
    saveExt 上传文件的保存后缀,不设置的话使用原文件后缀
    replace 存在同名文件是否是覆盖,默认为false
    exts 允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
    mimes 允许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
    autoSub 自动使用子目录保存上传文件 默认为true
    subName 子目录创建方式,采用数组或者字符串方式定义
    hash 是否生成文件的hash编码 默认为true
    callback 检测文件是否存在回调,如果存在返回文件信息数组