国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Laravel中前端js上傳圖片到七牛云的示例代碼

2024-05-05 00:00:00
字體:
來源:轉載
供稿:網友

以下Laravel中使用瀏覽器端上傳圖片到七牛云,下面只是做一些簡單的流程實例。

1. 首先引入相應的js文件,下面是通過CDN引入的StaticfileCDN,當然也有其他很多方式下載, bower,git,官網的SDK
七牛js基于Plupload插件封裝,所以需要下載Plupload,建議使用 2.1.1 ~ 2.1.9。

<script src="https://cdn.staticfile.org/jquery/2.2.1/jquery.min.js"></script><script src="https://cdn.staticfile.org/plupload/2.1.9/moxie.js"></script><script src="https://cdn.staticfile.org/plupload/2.1.9/plupload.dev.js"></script><script src="https://cdn.staticfile.org/qiniu-js-sdk/1.0.14-beta/qiniu.min.js"></script>

2.創建一個選擇文件的按鈕

  <div id="container">    <a class="btn btn-default btn-lg " id="pickfiles" href="#" rel="external nofollow" >      <span>選擇文件</span>    </a>  </div>

3.初始化 uploader

(請確保在執行初始化時,頁面已經引入 plupload),這里我們需要一個uptoken上傳憑證,這個需要php后端生成提供。一會下面我們來說怎么獲取token。

  function uploaderReady(token) {    console.log(token);    var uploader = Qiniu.uploader({      runtimes: 'html5,flash,html4',   // 上傳模式,依次退化      browse_button: 'pickfiles',   //上傳按鈕的ID      uptoken: token, // uptoken是上傳憑證,由其他程序生成     // uptoken_url: '/uptoken',    // Ajax請求uptoken的Url,強烈建議設置(服務端提供)     // uptoken_func: function(){    // 在需要獲取uptoken時,該方法會被調用     //  // do something     //  return uptoken;     // },      get_new_uptoken: false,       // 設置上傳文件的時候是否每次都重新獲取新的uptoken      unique_names: true,       // 默認false,key為文件名。若開啟該選項,JS-SDK會為每個文件自動生成key(文件名)      //save_key: true,         // 默認false。若在服務端生成uptoken的上傳策略中指定了sava_key,則開啟,SDK在前端將不對key進行任何處理      domain: 'http://ovngj7u9c.bkt.clouddn.com',  // bucket域名,下載資源時用到,必需      container: 'container',       // 上傳區域DOM ID,默認是browser_button的父元素      max_file_size: '100mb',       // 最大文件體積限制      flash_swf_url: 'path/of/plupload/Moxie.swf', //引入flash,相對路徑      max_retries: 1,           // 上傳失敗最大重試次數      dragdrop: true,           // 開啟可拖曳上傳      drop_element: 'container',     // 拖曳上傳區域元素的ID,拖曳文件或文件夾后可觸發上傳      chunk_size: '4mb',         // 分塊上傳時,每塊的體積      auto_start: true,          // 選擇文件后自動上傳,若關閉需要自己綁定事件觸發上傳      init: {        'FilesAdded': function (up, files) {          plupload.each(files, function (file) {            // 文件添加進隊列后,處理相關的事情          });        },        'BeforeUpload': function (up, file) {          // 每個文件上傳前,處理相關的事情        },        'UploadProgress': function (up, file) {          // 每個文件上傳時,處理相關的事情        },        'FileUploaded': function (up, file, info) {          // 每個文件上傳成功后,處理相關的事情          // 其中info是文件上傳成功后,服務端返回的json,形式如:          // {          //  "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",          //  "key": "gogopher.jpg"          // }          // 獲取url路徑 傳入后臺保存到數據庫           var domain = up.getOption('domain');           var url = JSON.parse(info);           var sourceLink = domain +"/"+ url.key;           $.ajax({            url: '/image',            type: 'POST',            dataType : 'json',            data: {              '_token':"{{ csrf_token() }}",              "url":sourceLink            },           });        },        'Error': function (up, err, errTip) {          console.log(errTip);        },        'UploadComplete': function () {          //隊列文件處理完畢后,處理相關的事情        },        'Key': function (up, file) {          // 若想在前端對每個文件的key進行個性化處理,可以配置該函數          // 該配置必須要在unique_names: false,save_key: false時才生效          var key = "";          // do something with key here          return key        }      }    });  }

4.后端獲取上傳憑證token

首先我們先去安裝一個七牛的packagist,github地址。

composer require "overtrue/laravel-filesystem-qiniu" -vvv

在app/config.php里面添加

'providers' => [  // Other service providers...  Overtrue/LaravelFilesystem/Qiniu/QiniuStorageServiceProvider::class,],

然后在config/filesystems.php配置好你的七牛信息

<?phpreturn [  //...  'qiniu' => [    'driver'   => 'qiniu',    'access_key' => env('QINIU_ACCESS_KEY', 'xxxxxxxxxxxxxxxx'),    'secret_key' => env('QINIU_SECRET_KEY', 'xxxxxxxxxxxxxxxx'),    'bucket'   => env('QINIU_BUCKET', 'test'),    'domain'   => env('QINIU_DOMAIN', 'xxx.clouddn.com'), // or host: https://xxxx.clouddn.com  ],  //...];

然后在你控制器store方法中寫入獲取token的代碼,一會好讓前端用ajax請求獲得

public function store(){  $disk = Storage::disk('qiniu');  $token = $disk->getUploadToken();    return response()->json(['uptoken'=>$token]);}

5.有了token之后我們繼續來完善前端代碼

為了理解我們寫一個ajax去請求store,當然你也可以在uploader里的uptoken_url屬性設置請求地址。

function getTokenMessage() {  $.ajax({    url: '你的控制器地址',    type: 'POST',    data: {'_token':"{{ csrf_token() }}"},    dataType : 'json',    success: function (data) {      var obj = data;      // 請求成功之后,調用剛剛寫好的uploaderReady方法,把token傳入過去      uploaderReady(obj.uptoken);    }  });}//讓頁面初始化的時候就請求$(document).ready(function(){  getTokenMessage();});

這里差不多就可以啦,更多的操作參考文檔七牛云官方js文檔

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。

 

注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 沈阳市| 陆川县| 诸城市| 桦南县| 渭南市| 正安县| 华安县| 深州市| 鄢陵县| 邻水| 西藏| 张家川| 和政县| 昭觉县| 吴堡县| 双流县| 文登市| 农安县| 五家渠市| 榆中县| 台江县| 泗阳县| 甘肃省| 通州区| 南平市| 靖江市| 华容县| 资阳市| 大化| 通化市| 桓仁| 康乐县| 沐川县| 南阳市| 措勤县| 台州市| 武穴市| 玉溪市| 通江县| 华蓥市| 浮梁县|