ThinkPhp5.1上傳文件到七牛雲服平臺

利用Thinkphp5.1上傳文件到七牛雲平臺

使用必讀:
1.作者使用form提交到七牛雲平臺
2.手動生成token,提交到七牛雲,執行回調
3.在回調裏做業務流程,前臺頁面判斷是否上傳成功
4.七牛雲測試域名只可以使用30天

1.登錄到七牛雲創建對象存儲

創建對象儲存

2.查看創建的對象儲存域名以及祕鑰

在這裏插入圖片描述
祕鑰 ->個人中心->祕鑰管理
在這裏插入圖片描述

3.下載第三方類庫,裏面是七牛雲封裝好的類 composer require qiniu/php-sdk

下載好之後vendor裏面會有七牛雲類庫
在這裏插入圖片描述

4.引入第三方類庫以及生成token攜帶到前臺頁面

在這裏插入圖片描述

use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
public function test(Request $request)
{
        $accessKey = '';
        $secretKey = '';
        $auth = new Auth($accessKey, $secretKey);
        // 要上傳的空間
        $bucket = '';
        $returnBody=[
            "key"=>"$(key)",
            "bucket"=>"$(bucket)",
            "myname"=>"",
        ];
        $policy=[
            'callbackUrl' => 'http://3/admin/music/callbask', //回調地址
            'callbackBody' => 'filename=$(key)&filesize=$(fsize)&id='.$music['id'],//參數,可增加
            'saveKey'=>"$(year)$(mon)$(day)$(hour)$(min)$(sec)$(fname)",//固定參數
            'returnBody'=>json_encode($returnBody),//固定參數
        ];
        $token = $auth->uploadToken($bucket,null,3600,$policy);//生成token
        $this->assign('token',$token);
        return view();
}

前臺頁面
在這裏插入圖片描述

<form id="setForm" method="post" enctype="multipart/form-data">
    <table class="table tb-type2">
        <tbody>
        <input name="token" type="hidden" value="{$token}" id="token">
        <tr>
            <td class="tr">音頻</td>
            <td>
                <input class="txt" type="file" id="file" name="file" style="border:0;background:none;">
            </td>
        </tr>
        <tr>
            <td class="tr"> </td>
            <td>
                <div id="submit" class="btn btn-success">確定保存</div>
            </td>
        </tr>
        </tbody>
    </table>
</form>

JS代碼

    $("#submit").on('click',function(){
            var formdata=new FormData();
            formdata.append('token',$("#token").val());
            formdata.append('file',$("#file")[0].files[0]);
            $.ajax({
                type:'post',
                url:'http://up-z2.qiniup.com/',//華南地圖用改地址就可以
                data:formdata,
                cache: false,
                contentType:false,
                processData: false,
                dataType:"json",
                error: function(request) {
                    alert(request.status);
                    return false;
                },
                success: function(data) {
                    if(data.ret == 'success'){
                        alert('操作成功');
                        return false;
                    }else{
                        alert('操作失敗');
                        return false;
                    }
                }
            });
        return false;
    });

回調方法

public function callbask()
{
    dump(input('post.'));//打印你攜帶的參數
    //祕鑰
    $accessKey = '';
    $secretKey = '';
    //空間名稱
    $bucket = getenv('');
    $auth = new Auth($accessKey, $secretKey);
    //獲取回調的body信息
    $callbackBody = file_get_contents('php://input');
    //回調的contentType
    $contentType = 'application/x-www-form-urlencoded';
    //回調的簽名信息,可以驗證該回調是否來自七牛
    $authorization = $_SERVER['HTTP_AUTHORIZATION'];
    //回調地址,填寫本方法即可
    $url = 'http://39.105.1/admin/music/callbask';
    $isQiniuCallback = $auth->verifyCallback($contentType, $authorization, $url, $callbackBody);
    if ($isQiniuCallback) {
        $resp = array('ret' => 'success');
    } else {
        $resp = array('ret' => 'failed');
    }
    //響應七牛雲服務器
    echo json_encode($resp);
}

這樣就可以上傳到七牛雲服務器了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章