PbootCMS對接阿里云OSS云存儲
實現(xiàn)方法:
本插件通過oss服務端上傳實現(xiàn),圖片類小文件沒啥問題,上傳視頻附件等大文件會很慢!
效果展示:
二開步驟
修改后臺模板
文件位置:/apps/admin/view/default/system/config.html
<div class="layui-tab-item"> <form action="{url./admin/Config/index}" method="post" class="layui-form"> <input type="hidden" name="formcheck" value="{$formcheck}" > <div class="layui-form-item"> <label class="layui-form-label">阿里OSS</label> <div class="layui-input-block"> <input type="radio" name="oss_open" value="1" {if([$configs.oss_open.value]==1)} checked="checked" {/if} title="啟用"> <input type="radio" name="oss_open" value="0" {if([$configs.oss_open.value]==0)} checked="checked" {/if} title="禁用"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">阿里AK</label> <div class="layui-input-inline"> <input type="text" name="oss_accak" value="{$configs.oss_accak.value}" placeholder="請輸入OSS AK碼" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">阿里SK</label> <div class="layui-input-inline"> <input type="text" name="oss_accsk" value="{$configs.oss_accsk.value}" placeholder="請輸入OSS密鑰" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">bucket</label> <div class="layui-input-inline"> <input type="text" name="oss_bucket" value="{$configs.oss_bucket.value}" placeholder="請輸入bucket庫名" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">上傳地址</label> <div class="layui-input-inline" style="width:300px;"> <input type="text" name="oss_network" value="{$configs.oss_network.value}" placeholder="請輸入OSS外網(wǎng)上傳" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">訪問鏈接</label> <div class="layui-input-inline" style="width:300px;"> <input type="text" name="oss_url" value="{$configs.oss_url.value}" placeholder="請輸入OSS訪問前綴鏈接" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">附件名稱</label> <div class="layui-input-block"> <input type="radio" name="original_name" value="1" {if([$configs.original_name.value]==1)} checked="checked" {/if} title="保持原名"> <input type="radio" name="original_name" value="0" {if([$configs.original_name.value]==0)} checked="checked" {/if} title="隨機名稱"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit name="submit" value="t9">立即提交</button> <button type="reset" class="layui-btn layui-btn-primary">重置</button> </div> </div> </form> </div>
細節(jié)問題自行調整
上傳OSS SDK包
把下載的SDK上傳到/core/extend
添加OSS上傳代碼
文件位置:/core/function/handle.php
最上面引入一下SDK use OSSOssClient; use OSSCoreOssException; . . . //oss文件上傳 function upload_oss($file_url) { if (is_https()) { $network = 'https://' . Config::get('oss_network'); } else { $network = 'http://' . Config::get('oss_network'); } $accessKeyId = Config::get('oss_accak'); $accessKeySecret = Config::get('oss_accsk'); $bucket = Config::get('oss_bucket'); //oss庫名 $url = 'https://' .Config::get('oss_url'); //oss訪問地址 $content = str_replace("static/", "", strstr($file_url, "static/")); //處理目錄(要上傳的oss目錄) try { $ossurl = $url . "/" . $content; $ossClient = new OssClient($accessKeyId, $accessKeySecret, $network); $data = $ossClient->uploadFile($bucket, $content, $file_url); } catch (Exception $e) { $save_file = str_replace(ROOT_PATH, '', $file_url); $ossurl = $save_file; // 上傳文件失敗 返回默認的地址 } // 成功的時候刪除本地文件 if ($data['info']['http_code'] == 200) { path_delete($file_url); } return $ossurl; }
載入SDK
文件位置:/core/init.php
搜索關鍵詞:載入基礎函數(shù)庫
如圖把這兩句話丟進去
require CORE_PATH . '/extend/alioss/autoload.php'; spl_autoload_register('classLoader', true, true);
修改上傳函數(shù)
文件位置:/core/function/file.php
搜索函數(shù):handle_upload 我整個函數(shù)都貼出來自己對比下
頂部引入 use coreasicConfig; // 處理并移動上傳文件 function handle_upload($file, $temp, $array_ext_allow, $max_width, $max_height, $watermark) { // 定義主存儲路徑 $save_path = DOC_PATH . STATIC_DIR; $file = explode('.', $file); // 分離文件名及擴展 $file_ext = strtolower(end($file)); // 獲取擴展 $file_name = $file[0]; //文件名稱 if (! in_array($file_ext, $array_ext_allow)) { return $file_ext . '格式的文件不允許上傳!'; } $image = array( 'png', 'jpg', 'gif', 'bmp', 'webp' ); $file = array( 'ppt', 'pptx', 'xls', 'xlsx', 'doc', 'docx', 'pdf', 'txt' ); if (in_array($file_ext, $image)) { $file_type = 'image'; if(Config::get('is_webp')==1){ // 如果是圖片強制把后綴修改為webp $file_ext = "webp"; } } elseif (in_array($file_ext, $file)) { $file_type = 'file'; } else { $file_type = 'other'; } // 檢查文件存儲路徑 if (! check_dir($save_path . '/' . $file_type . '/' . date('Ym'), true)) { return '存儲目錄創(chuàng)建失??!'; } // 文件名稱處理 if(Config::get('original_name')==0 || $file_type=='image') { // 隨機名稱 $file_name = time() . mt_rand(100000, 999999); } $file_path = $save_path . '/' . $file_type . '/' . date('Ym') . '/' . $file_name . '.' . $file_ext; if (! move_uploaded_file($temp, $file_path)) { // 從緩存中轉存 return '從緩存中轉存失??!'; } $save_file = str_replace(ROOT_PATH, '', $file_path); // 獲取文件站點路徑 // 如果是圖片 if (is_image($file_path)) { // 進行等比例縮放 if (($reset = resize_img($file_path,$file_path,$max_width,$max_height)) !== true) { return $reset; } // 圖片打水印 if ($watermark) { watermark_img($file_path); } } // 轉存OSS if(Config::get('oss_open')==1) { $save_file = upload_oss($file_path); } return $save_file; }
繼續(xù)修改編輯器上傳函數(shù)
文件地址:/core/extend/ueditor/php/action_upload.php
搜索關鍵詞:$upload = $up->getFileInfo();
如圖代碼丟進去
// 驗證是否上傳OSS if(Config::get('oss_open') == 1) { $upload['url'] = upload_oss($_SERVER['DOCUMENT_ROOT'].$rs['url']); }
至此結束!
版權聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡收集,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業(yè)用途,如果損害了您的權利,請聯(lián)系網(wǎng)站客服處理。