zoukankan      html  css  js  c++  java
  • 【tp5.1】七牛云上传图片

    composer安装:

    composer require qiniu/php-sdk

    配置使用:

    在tp5.1的配置文件app.php中配置七牛云的参数

        'qiniu' => [
            'accesskey' => '你的accesskey',
            'secretkey' => '你的secretkey',
            'bucket'    => '存储空间',
            'domain'    =>  '域名'
        ],

    前端使用webuploader上传

    /*****加载AJAX上传图片******/
    // 调用形式  Upload(元素编号,允许上传商品数量);
    function Upload(i,num){
        sumimg(num);
    //            var token = 'ZTEpdpZn1J1fLzgTfNtLXvRmcu0bjcnTUUhoQsEW';
        var uploader = WebUploader.create({
            auto: true,
            swf: '/static/extends/lib/webuploader/0.1.5/Uploader.swf',//文件接收服务端。
            server: '/admin/tool/uploadImg',//文件接收服务端。
            pick: '#filePicker'+i,//指定选择文件的按钮容器
            fileNumLimit: num,//文件数量
            compress: {
                // 图片质量,只有type为`image/jpeg`的时候才有效。
                quality: 90,
            },
            accept: { //指定接受哪些类型的文件
                title: 'Images',
                extensions: 'gif,jpg,jpeg,bmp,png',
                mimeTypes: 'image/*'
            }
        });
        uploader;
        //当文件被加入队列以后触发
        uploader.on('fileQueued',function(file){
            var $li = $(
                    '<div id="' + file.id + '" class="file-item thumbnail" onclick="delUpload(this,'+i+','+num+');">' +
                    '<input type="hidden" name="img[]" id="'+file.id+'id" />'+
                    '<img>' +
                    '<div class="info">开始上传图片...</div>' +
                    '</div>'
                ),
                $img = $li.find('img');
            $("#fileList"+i).append($li);//图片添加到容器
            var sum = $("#fileList"+i).find('.file-item').length;
            if(sum >= num){
                $("#filePicker"+i).attr('style','display:none;');
            }
            // 创建缩略图显示
            uploader.makeThumb(file,function(error,src){
                if (error){
                    $img.replaceWith('<span>不能预览</span>');
                    return;
                }
                $img.attr('src',src);
            },200,200);
        });
        // 文件上传过程中创建进度百分比实时显示。
        uploader.on('uploadProgress',function(file,percentage){
            $("#"+file.id+" .info").html('正在上传('+parseInt(percentage*100)+'%)');
        });
    
        //文件上传返回成功,判断是否成功上传到七牛
        uploader.on('uploadSuccess', function(file,response){
            if(response.code == 0){
                $("#"+file.id+" .info").html('上传失败');
            }else{
                sumimg(num);
                $("#"+file.id+" .info").html('上传完成,点击图片可删除');
                $( '#'+file.id ).addClass('upload-state-done');
                $( '#'+file.id+"id").val(response.data);//赋值到input
            }
        });
    }

    后台代码:

    调用七牛

    use QiniuAuth;
    use QiniuConfig;
    use QiniuStorageBucketManager;
    use QiniuStorageUploadManager;

    上传图片:

            // 初始化签权对象
            $auth = new Auth($this->_accessKey,$this->_secretKey);
    
            $token = $auth->uploadToken($this->_bucket);
    
            // 构建 UploadManager 对象
            $uploadMrg = new UploadManager();
    
            // 上传文件到七牛
            $files = $_FILES;
            $values = array_values($files);
            $saveName = hash_file('sha1', $values[0]['tmp_name']) . time();
            list($ret, $err) = $uploadMrg->putFile($token, $saveName, $values[0]['tmp_name']);
    
            if ($err !== null) {
                $return =  [
                    'code'  =>  0,
                    'msg'   =>  '上传图片失败'
                ];
            } else {
                $return =  [
                    'code'  =>  1,
                    'msg'   =>  '上传成功',
                    'data'  =>  'http://' . $this->_domain . '/' . $ret['key']
                ];
            }
            return json($return);

    删除图片:

            $img = Request::param('name');
    
            $imgArr = explode('/',$img);
    
            $delImgName = end($imgArr);
    
                // 初始化签权对象
            $auth = new Auth($this->_accessKey,$this->_secretKey);
    
            $config = new Config();
    
    //        管理资源
            $bucketManager = new BucketManager($auth,$config);
    
    //        删除文件操作
            $res = $bucketManager -> delete($this->_bucket,$delImgName);
    
            if (is_null($res) || $res == null) {
                // 为null成功
                $return = [
                    'code'  =>  1,
                    'msg'   =>  '删除成功'
                ];
            }else{
                $return = [
                    'code'  =>  0,
                    'msg'   =>  '删除失败'
                ];
            }
    
            return json($return);
  • 相关阅读:
    org.json里实现XML和JSON之间对象互转
    Rhino-- JavaScript
    XStream -- a simple library to serialize objects to XML and back again
    [Groovy]转:Groovy 通过 isCase 方法进行分类
    [Groovy]static typing
    JavaScript Succinctly 读后笔记
    [Groovy] Private fields and methods are not private in groovy
    Android 学习之路和App开发框架
    Android自定义xml解析
    Android 动态生成对话框和EditText
  • 原文地址:https://www.cnblogs.com/BearLee/p/10685018.html
Copyright © 2011-2022 走看看