国产三级农村妇女在线,国产精品毛片a∨一区二区三区,国产乱子伦视频大全,国产精品色拉拉,国产欧美日韩一区二区三区,

首頁 > 技術(shù) > IOS開發(fā)

laravel 實(shí)現(xiàn)阿里云oss文件上傳功能的示例

IOS開發(fā) 2023-02-16 22:21:39

1、定義路由

// 阿里云文件儲(chǔ)存
Route::group(['prefix'=>'aliyun'], function(){
    Route::get('sign', 'AliyunController@sign');
}); 

2、編寫 controller 層

/**
     * 返回OSS的簽名驗(yàn)證
     * @return JSON 簽名信息
     */
    public function sign(Request $request)
    {
        //初始化一下必要的請求數(shù)據(jù)
        $id = 'xxx';   //AccessKeyId
        $key = 'xxx';  //AccessKeySecret
        $host = '//xxx.oss-cn-shenzhen.aliyuncs.com';  //OSS庫地址
        $CDN_host = "http://img.xxx.com"; //真實(shí)的訪問地址
        $dir = 'test/';  //上傳目錄設(shè)置
        $callbackUrl = url('upload/callback');  //上傳回調(diào)的地址

        //上傳回調(diào)的參數(shù),callbackUrl地址,callbackBody回調(diào)接收的參數(shù),callbackBodyType通過POST調(diào)用的回調(diào)函數(shù),所以要設(shè)置這個(gè)頭
        $callback_param = array(
            'callbackUrl' => $callbackUrl,
            'callbackBody' => 'filename=${object}&size=${size}&mimeType =${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}',
            'callbackBodyType' => "application/x-www-form-urlencoded"
        );
        $callback_string = json_encode($callback_param);  //轉(zhuǎn)換成json格式
        $base64_callback_body = base64_encode($callback_string); //要返回的回調(diào)函數(shù)參數(shù)信息

        //設(shè)置過期時(shí)間
        $now = time();
        
        $expire = 60 * 60 * 2; //設(shè)置該policy超時(shí)時(shí)間是 2小時(shí). 即這個(gè)policy過了這個(gè)有效時(shí)間,將不能訪問,這里可以根據(jù)自己的token過期時(shí)間來設(shè)置
        $end = $now + $expire;
        $expiration = $this->gmt_iso8601($end);  //進(jìn)行時(shí)間格式的轉(zhuǎn)換


        //處理上傳限制條件
        //最大文件大小.用戶可以自己設(shè)置
        $condition = array(0 => 'content-length-range', 1 => 0, 2 => 1048576000);
        $conditions[] = $condition; //設(shè)定文件大小
        //表示用戶上傳的數(shù)據(jù),必須是以$dir開始, 不然上傳會(huì)失敗,這一步不是必須項(xiàng),只是為了安全起見,防止用戶通過policy上傳到別人的目錄
        $start = array(0 => 'starts-with', 1 => '$key', 2 => $dir);
        $conditions[] = $start;  //必須以設(shè)定的目錄開頭,防止上傳錯(cuò)誤
        $arr = array('expiration' => $expiration, 'conditions' => $conditions);
        $policy = json_encode($arr);
        $base64_policy = base64_encode($policy);  //要返回的上傳限制參數(shù)

        //簽名信息
        $string_to_sign = $base64_policy;
        $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $key, true));  //要返回的簽名信息

        //設(shè)置返回信息
        $response = array(
            'accessid' => $id,  //accessid
            'host' => $host,    //上傳地址
            'cdn_host' => $cdn_host,    //真實(shí)的訪問地址
            'policy' => $base64_policy,  //上傳文件限制
            'signature' => $signature,   //簽名信息
            'expire' => $end,    //失效時(shí)間
            'callback' => $base64_callback_body,  //上傳回調(diào)參數(shù)
            'dir' => $dir     //上傳的目錄
        );
        return response()->json([
            'code' => 0,
            'msg' => 'success',
            'data' => $response
        ]);
    }

    //格式化時(shí)間,格式為2020-07-07T23:48:43Z
    public function gmt_iso8601($time)
    {
        $dtStr = date("c", $time);
        $pos = strpos($dtStr, '+');
        $expiration = substr($dtStr, 0, $pos);
        return $expiration . "Z";
    }

3、查看接口返回

laravel 實(shí)現(xiàn)阿里云oss文件上傳功能的示例(圖1)

4、前端界面及操作編寫,這里采用的是 vue





5、點(diǎn)擊上傳按鈕,瀏覽器控制臺(tái)輸出鏈接,訪問該鏈接,即可看到該圖片

laravel 實(shí)現(xiàn)阿里云oss文件上傳功能的示例(圖2)

到此這篇關(guān)于laravel 實(shí)現(xiàn)阿里云oss文件上傳功能的示例的文章就介紹到這了,更多相關(guān)laravel 阿里云oss文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

TAg

加載中~

本網(wǎng)站LOGO受版權(quán)及商標(biāo)保護(hù),版權(quán)登記號:國作登字-2022-F-10126915,未經(jīng)湖南木星科技官方許可,嚴(yán)禁使用。
Copyright ? 2012-2022 湖南木星科技有限公司(木星網(wǎng))版權(quán)所有
轉(zhuǎn)載內(nèi)容版權(quán)歸作者及來源網(wǎng)站所有,本站原創(chuàng)內(nèi)容轉(zhuǎn)載請注明來源,商業(yè)媒體及紙媒請先聯(lián)系:aishangyiwan@126.com

工信部備案號:湘ICP備19012813號-5