1***@qq.com
1***@qq.com
  • 发布:2018-05-30 16:26
  • 更新:2018-05-30 16:26
  • 阅读:2380

uploader又拍云上传文件集成

分类:HTML5+

项目中用到又拍云文件存储,找了一遍没找到关于又拍云上传的方法,只能自己造了
首先我封装到一个文件了

(function($, request, upyun){  
    upyun.bucket = '您的服务名称'  
    upyun.upload = function (path, success, fail) {  
        var self = this  
        success = success || mui.noop  
        fail = fail || mui.noop  
        var name = path.substr(path.lastIndexOf('/') + 1)  
        this.getSignature({name: name}, function(err, res){  
            if (err) {  
              fail && fail(err)  
              return  
            }  
            var task = plus.uploader.createUpload(  
                'https://v0.api.upyun.com/'+ self.bucket,  
                {method:'POST'},   
                function ( t, status ) {  
                if ( status == 200 ) {  
                    var data = JSON.parse(t.responseText)  
                    if(data.code == 200){  
                        success(data)  
                    }else{  
                        fail(data.message)  
                    }  
                } else {  
                    fail({err:status,message:'上传文件出错'+ JSON.stringify(t)})  
                }  
            })  
            task.addFile(path, {key:"file"})  
            task.addData("authorization", res.signature || '')  
            task.addData("policy", res.policy || '')  
            task.start()  
        })  
    }  

    upyun.getSignature = function (data, cb) {  
        request.post(api.upsign, data).then(function(data){  
           cb(null, data)  
        }).catch(function(err){  
           cb(err)  
        })  
    }  
})(mui, request, window.upyun={})

后端采用php签名

        $key = 'upyun.operator‘;  
        $secret = md5('upyun.password');  
        $method = "POST";  
        $uri = "/".‘upyun.bucket';  
        $date = gmdate('D, d M Y H:i:s \G\M\T');  
        $name = $_POST['name'];  
        $ext = substr($name, strrpos($name, '.') + 1);  
        $name =str_replace('.','', microtime(true)).".".$ext;  
        $path = '/test/'.$name; //远程文件路径  
        $policy = base64_encode(json_encode([  
            'save-key' => $path,  
            'bucket' => 'upyun.bucket',  
            'expiration' => time() + 3600,  
            'date' => gmdate('D, d M Y H:i:s \G\M\T')  
        ]));  
        $elems = array();  
        foreach (array($method, $uri, $date, $policy) as $v)  
        {  
            if ($v)  
            {  
                $elems[] = $v;  
            }  
        }  
        $value = implode('&', $elems);  
        $sign = base64_encode(hash_hmac('sha1', $value, $secret, true));  
        $sign = 'UPYUN ' . $key . ':' . $sign;  
        $data = ['policy' => $policy, 'signature' => $sign];  
        echo json_encode($data);

使用方法很简单

upyun.upload(path, function(data){  
       console.log(JSON.stringify(data))  
},function(err){  
    console.log(JSON.stringify(err))  
})
0 关注 分享

要回复文章请先登录注册