用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6887|回复: 3
收起左侧

[上传/下载] 有人利用七牛的JS-SDK,上传文件吗?

[复制链接]
发表于 2017-9-28 15:30:33 | 显示全部楼层 |阅读模式
30CI币
七牛上传JS-SDK,可以称之为 授权登录,
前端载入JS,后端同步加载一个uptoken;

然后前端就可以根据这个token,上传到七牛服务器并返回文件地址


我将用户的文本,和文件地址,存储到自己服务器

----------------------------------------------------------------------------


目前我卡在授权这里,七牛下载php-sdk到后台,放lib里?


自己写个路由xxx.com/-uptoken,这个接口处理授权uptoken,
ptoken是七牛的php-sdk生产,

我不知道该是写类,还是写第三方,还是写helper。实现前端ajax访问xxx.com/-uptoken
返回给他token

麻烦打架了

发表于 2017-10-5 14:44:41 | 显示全部楼层
sdk文件夹放在application/libraries/下
目录是这样的
application/libraries/Qiniu
application/libraries/Qiniu.php
控制器******************************************
1 获取token
        public function getQiniuToken() {
                $this->load->library('Qiniu');
                $bucket = '你的bucket';
                $accessKey = '你的accessKey';
                $secretKey = '你的secretKey';

                $auth = new Qiniu\Auth($accessKey, $secretKey);
                echo $auth->uploadToken($bucket);
        }

2 删除图片
public function DeleteQiniuFile() {
                $key = $this->input->post("filename"); //要删除的图片名,就是后面的  qiniuKey
                $this->load->library('Qiniu');
                $bucket = '你的bucket';
                $accessKey = '你的accessKey';
                $secretKey = '你的secretKey';

                $auth = new Qiniu\Auth($accessKey, $secretKey);

                $bucketMgr = new Qiniu\Storage\BucketManager($auth);
                $bucketMgr->delete($bucket, $key);
               
        }




前台js******************************************
1 从控制器获取token

var TOKEN = '';

function initToken() {
        if(TOKEN === '') {
                $.ajax({
            type: "post",
            data: null,
            url:  site_url + '/控制器名称/getQiniuToken',
            success: function(result){
                    TOKEN = result;

            }, error: function(result){

            }
        });
        }
}



2 上传函数,我这里用了一个上传组件,你参考有@的地方
function initImgUpload() {
       
        initToken();

       var qiniuKey = "你设定的唯一文件名,要对于你的七牛账号都是唯一的一个字符串标识";

        var up = $('#imgUpload').Huploadify({
                auto:false,
                fileTypeExts:'*.jpg;*.png;*.jpeg;*.gif',
                multi:false,
                fileSizeLimit:1024,
                buttonText:"选择图片",
                breakPoints:true,
                saveInfoLocal:true,
                showUploadedPercent:true,//是否实时显示上传的百分比,如20%
                showUploadedSize:true,
                removeTimeout:700,

                uploader:'http://up.qiniu.com',     //@注意这里,上传文件不经过ci,直接到qiniu服务器了

                onUploadStart:function(){
                       
                        up.Huploadify('settings','formData', {key:qiniuKey,   token:TOKEN}); //@注意这里 ,上传文件时把这两参数带上

                },
                onUploadSuccess:function(file){
                       
                       //图片上传成功后的一些后续处理
                        $.ajax({
                                type: "post",
                                data: {qiniuKey:qiniuKey},
                                url:  site_url + '/xxxxx/业务处理',
                                success: function(result){
                                        //业务处理成功
                                }, error: function(result){
                                       
                                }
                });



                       

                }
               
        });
}


3 删除图片
// 删除七牛服务器的图片
function deleteQiniu(result) {
        $.ajax({
                type: "post",
                data: {filename:'要删除的图片的唯一的文件名(字符串标识)'},
                url:  site_url + '/xxxxxxxx/DeleteQiniuFile',
                success: function(result){
                        //删除成功
                }, error: function(result){
                       
                }
        });
}
回复

使用道具 举报

发表于 2017-10-5 14:51:58 | 显示全部楼层
function S4() {
   return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
//生成随机数
function guid() {
   return (S4()+S4()+S4()+S4()+S4()+S4()+S4()+S4());
}

var qiniuKey = guid();  //这样会得到一个唯一的字符串


其他的参考七牛文档,我只用到了上传和删除图片



回复

使用道具 举报

发表于 2017-10-5 14:54:04 | 显示全部楼层
Qiniu.php的内容如下

<?php  

require 'Qiniu/Autoloader.php';

class Qiniu {

    public function __construct() {
        Qiniu\Autoloader::register();
        require 'Qiniu/functions.php';
    }
}
回复

使用道具 举报

本版积分规则