zoukankan      html  css  js  c++  java
  • ThinkPHP 文件上传到阿里云OSS上(干货)

    参考:http://www.thinkphp.cn/extend/789.html

    1、前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-php-sdk/releases。
    这里介绍源码部署:Source code下载下来。.phar其实就是一个打包文件,直接引用后就能用,大家自己去试试吧,功能是一样的。
    2、将下载下来的压缩包解压后放到项目ThinkPHPLibraryVendoraliyun路径下。aliyun文件夹是我自己建的,大家可以自己命名。
    3、在控制器中编写代码:
    
    控制器中要加入
    use OSSCoreOssException;//不然OssException 报错
    
    配合upload上传类(图片为例)
    $upload = new ThinkUpload();// 实例化上传类
    $upload->maxSize = 3145728 ;// 设置附件上传大小
    $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
    $upload->rootPath = './Public/uploads/'; // 设置附件上传根目录
    $upload->savePath = ''; // 设置附件上传(子)目录
    $upload->saveName = array('uniqid','');
    // 上传文件
    $info = $upload->upload();
    if(!$info) {// 上传错误提示错误信息
    //处理上传错误信息
    }else{// 上传成功
    vendor('aliyun.autoload');
    $accessKeyId = "";//去阿里云后台获取秘钥
    $accessKeySecret = "";//去阿里云后台获取秘钥
    $endpoint = "";//你的阿里云OSS地址
    $ossClient = new OSSOssClient($accessKeyId, $accessKeySecret, $endpoint);
    
    $bucket= "";//oss中的文件上传空间
    $object = date('Y-m-d').'/'.$info['imgfile']['savename'];//想要保存文件的名称
    $file = './Public/uploads/'.$info['imgfile']['savepath'].$info['imgfile']['savename'];//文件路径,必须是本地的。
    try{
    $ossClient->uploadFile($bucket,$object,$file);
    //上传成功,自己编码
    //这里可以删除上传到本地的文件。unlink($file);
    } catch(OssException $e) {
    //上传失败,自己编码
    printf($e->getMessage() . "
    ");
    return;
    }
    }

    项目实例,,我是这样处理的。。

    第一步:下载:https://github.com/aliyun/aliyun-oss-php-sdk/releases

    核心文件:放到ThinkPHPLibraryVendor下,新建文件aliyun。

    第二步,配置文件:config.php..这个不能出错。。。

    //阿里云OSS文件上传配置
        'accessKeyId' => 'XXXX',//去阿里云后台获取秘钥
        'accessKeySecret' => 'yyyy',//去阿里云后台获取秘钥
        'endpoint' => 'zzzz',//你的阿里云OSS地址
        'bucket' => 'wwwwww',//oss中的文件上传空间

    第三步:要引用的控制器下引用:use OSSCoreOssException;

    如:

     if ($_FILES['plan_name']['size'] < 204800000 && in_array($type['extension'], array('pdf'))) {
                            if ($a = uploadImage($_FILES[plan_name], $this->admin[id] . '_' . $t)) {
                                $_POST[plan_name] = $this->admin[id] . '_' . $t;
                            }
    
                            // 2016-1-12 添加开始
                            $upload = new ThinkUpload();// 实例化上传类
                            $upload->maxSize = 314572800 ;// 设置附件上传大小
                            $upload->exts = array('pdf','PDF');// 设置附件上传类型
                            $upload->rootPath = './Application/Public/upload/'; // 设置附件上传根目录
                            $upload->savePath = 'fqlc/';
                            $info = $upload->upload();
                            $getOssPdfUrl = '';
                            if($info){
                                vendor('aliyun.autoload');
                                $ossClient = new OSSOssClient(C('accessKeyId'),C('accessKeySecret'),C('endpoint'));
                                $object = date('Y-m-d').'/'.$info['plan_name']['savename'];//想要保存文件的名称
                                $file = $upload->rootPath.$info['plan_name']['savepath'].$info['plan_name']['savename'];//文件路径,必须是本地的。
                                try{
                                    $getOssInfo = $ossClient->uploadFile(C('bucket'),$object,$file);
                                    $getOssPdfUrl = $getOssInfo['info']['url'];
                                    if($getOssPdfUrl){
                                        unlink($file);
                                       // rmdir($upload->rootPath.$upload->savePath,0777);
                                    }
                                }catch(OssException $e){
                                    printf($e->getMessage() . "
    ");
                                    return;
                                }
                            }
                            // 2016-1-12 添加结束
                        }
                    }

     第四步。。测试,,OK。。。

  • 相关阅读:
    直接用ISO文件在linux上安装新系统
    vsftpd config备忘
    失恋那回事~~~
    Java之深入JVM(0) 序
    No.6 ThreadLocal类及应用技巧
    Java之多线程(1) Race Condition引起的性能问题
    NO.10 Callable与Future的应用
    NO.5 线程范围内共享变量的概念与作用(二)
    NO.5 线程范围内共享变量的概念与作用(一)
    NO.7多个线程之间共享数据的方式探讨
  • 原文地址:https://www.cnblogs.com/wuheng1991/p/6292408.html
Copyright © 2011-2022 走看看