>[danger] 七牛云圖片上傳封裝類
```
composer require qiniu/php-sdk
```
```php
<?php
// 本文件放入TP6.0的extend目錄下 extend/Qiniu.php
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
// 設置配置參數
// Qiniu::setConfig([
// 'bucket' => 'xxxxx',
// 'domain' => 'https://test.itqaq.com',
// 'accessKey' => 'l_OnndRIVj17ZwIKMOZBLorh5dK4xxxxxxx',
// 'secretKey' => '7fXF7wbOWcC5pUJKmGz3N8xxxxxxxxxxxxx',
// ]);
// 執行上傳
// Qiniu::upload('img', 'art/thumb');
// 上傳成功 $arr
// 'result' =>true
// 'msg' => 上傳成功
// 'path' => 帶域名的圖片URL
//
// 上傳失敗 $arr
// 'result' => false
// 'msg' => 錯誤信息
/**
* 七牛云封裝類
* composer require qiniu/php-sdk
*
* @author liang <23426945@qq.com>
* @version 1.0.0
* @datetime 2020-07-20
* @homepage www.itqaq.com
*/
class Qiniu
{
private static $bucket;
private static $domain;
private static $accessKey;
private static $secretKey;
/**
* 私有化構造方法
* 禁止類在外部被實例化
*/
private function __construct(){}
/**
* 設置七牛云配置參數
*/
public static function setConfig($config)
{
// 存儲空間名稱
self::$bucket = $config['bucket'];
// 存儲空間對應的域名
self::$domain = $config['domain'];
// 用于簽名的公鑰 AK
self::$accessKey = $config['accessKey'];
// 用于簽名的私鑰 SK
self::$secretKey = $config['secretKey'];
}
/**
* 文件上傳到七牛云
*/
public static function upload($field, $dirname = '')
{
// 捕獲異常
try {
// 此時可能會報錯
// 比如:上傳的文件過大,超出了配置文件中限制的大小
$file = request()->file($field);
// 如果表單沒有設置文件上傳需要的編碼 $file始終是null
if (is_null($file)) throw new \think\Exception('沒有文件上傳,請檢查當前是否為post請求并且是否設置了編碼: enctype="multipart/form-data"');
} catch (\think\Exception $e) {
// 獲取異常錯誤信息
$errMsg = $e->getMessage();
// 上傳失敗,返回錯誤信息
return self::_rtnData(false, self::_chinese($errMsg));
}
// 臨時文件路徑
$tmpName = $file->getRealPath();
// 原始文件后綴名
$ext = $file->getOriginalExtension();
// 初始化鑒權對象
$auth = new Auth(self::$accessKey, self::$secretKey);
// 生成上傳Token
$token = $auth->uploadToken(self::$bucket);
// 上傳管理類 構建UplaodManager對象
$uploadMgr = new UploadManager();
// 目錄名
if ($dirname != '') $dirname .= '/';
// 隨機文件名
$path = $dirname . md5(microtime(true) . mt_rand(1, 1e9)) . '.' . $ext;
// 執行文件上傳到七牛云
$info = $uploadMgr->putFile($token, $path, $tmpName);
// 上傳到七牛云后的路徑
$qiniuPath = self::$domain . '/' . $info[0]['key'];
// 返回上傳成功的狀態信息
return self::_rtnData(true, '上傳成功', $qiniuPath);
}
/**
* 文件上傳返回結果數組
*/
private static function _rtnData(bool $result, $msg = null, $path = null)
{
// 過濾掉值為null的數組元素
return array_filter(compact('result', 'msg', 'path'), function($v){
return !is_null($v);
});
}
/**
* 英文轉為中文
*/
private static function _chinese($msg)
{
$data = [
// 上傳錯誤信息
'unknown upload error' => '未知上傳錯誤!',
'file write error' => '文件寫入失敗!',
'upload temp dir not found' => '找不到臨時文件夾!',
'no file to uploaded' => '沒有文件被上傳!',
'only the portion of file is uploaded' => '文件只有部分被上傳!',
'upload File size exceeds the maximum value' => '上傳文件大小超過了最大值!',
'upload write error' => '文件上傳保存錯誤!',
];
return $data[$msg] ?? $msg;
}
/**
* 私有化克隆方法
* 禁止類的實例在外部被克隆
*/
private function __clone(){}
}
```
- 序言
- 術語
- 安裝
- 創建項目
- nginx偽靜態
- 阿里云鏡像
- composer.phar
- 測試運行 ThinkPHP6.0
- PhpStudy-v8.1 運行TP6.0
- 開啟偽靜態
- PhpStudy2018 運行 TP6.0
- 配置虛擬域名
- 基礎
- 單應用模式
- 多應用模式
- 公共函數
- 多應用模式擴展
- 擴展類庫
- 介紹
- 使用
- Math.php
- Layui.php
- 自己封裝的類
- 文件上傳
- 配置
- database.php
- filesystem.php
- view.php
- route.php
- 配置目錄
- 自定義配置文件
- 路由
- 路由簡介
- 注冊路由
- 路由別名
- 多應用路由
- 域名綁定路由
- 中間件
- 中間件簡介
- 中間件文件
- 中間件定義
- 中間件別名
- 全局中間件
- 應用中間件
- 路由中間件
- 控制器中間件
- 控制器
- 基礎控制器
- 初始化方法
- 注入的對象
- 數據驗證功能
- 創建控制器
- 控制器命名
- 控制器目錄
- 控制器定義
- 控制器后綴
- 多級控制器
- 渲染輸出
- 基礎控制器登陸驗證
- 請求
- 請求對象
- 請求信息
- 請求類型
- 數據庫
- 連接數據庫
- 指定數據表
- 查詢
- find
- select
- 更新
- save
- update
- 鏈式操作
- field
- join
- where
- whereIn
- 字符串條件
- 查詢表達式
- fetchSql
- 聚合查詢
- count
- 分頁查詢
- 分頁參數
- 分頁樣式
- 分頁樣式代碼
- 自定義分頁驅動
- 默認分頁代碼
- 時間查詢
- 事務操作
- 數據集
- 模型
- 模型定義
- 添加
- 簡介
- save
- create
- 刪除
- 簡介
- delete
- destroy
- 軟刪除
- 修改
- 靜態方法直接更新
- 查詢
- find
- select
- 獲取器
- 應用場景
- 獲取器定義
- 觸發獲取器
- 追加獲取器
- 獲取原始數據
- getData
- 應用示例
- 修改器
- 觸發修改器
- 搜索器
- 搜索器定義
- 調用搜索器
- 使用示例
- 功能函數
- 只讀字段
- 只讀字段簡介
- 模型關聯
- 一對一關聯
- 數據表
- 基礎使用
- 關聯查詢
- hasOne
- hasWhere
- belongsTo
- 關聯保存更新
- 預載入查詢
- with
- withJoin
- 綁定屬性到父模型
- bind
- 屬性別名
- bindAttr
- 應用示例
- 一對多關聯
- 基礎使用
- 關聯定義
- 關聯查詢
- 基本查詢
- 關聯條件查詢
- 遠程一對多關聯
- 簡介
- 數據表
- hasManyThrough
- 關聯預載入
- 簡介
- 數據表
- 關聯統計
- withCount
- 關聯輸出
- hidden
- visible
- append
- 關聯刪除
- 根據關聯條件查詢
- 自動時間戳
- 配置
- 觸發
- 寫入格式
- 自定義字段
- 模型輸出
- 模板輸出
- 數組轉換
- 模型事件
- 模型屬性
- 關聯保存
- 視圖
- 視圖擴展
- 模板賦值
- 視圖過濾
- 視圖目錄
- 模板渲染
- 條件判斷標簽
- 模板輸出使用函數
- 調試
- 調試模式
- 變量調試
- 關閉 trace 調試
- 驗證
- 生成驗證器類
- 驗證器類成員
- 驗證規則
- 錯誤信息
- 驗證場景
- 應用示例
- 內置驗證規則
- require
- file
- 格式驗證類
- 長度區間類
- 字段比較類
- 其他驗證類
- 執行數據驗證
- 雜項
- Session
- 默認狀態
- 開啟Session
- Session初始化
- Session基礎用法
- Cookie
- 基本使用
- 文件上傳
- 上傳簡介
- 上傳規則
- 上傳對象
- 方法描述
- 上傳驗證
- 多文件上傳
- 獲取磁盤配置
- 獲取默認磁盤名稱
- 自定義命名規則
- layui
- 文件上傳
- layuiAdmin單頁版
- 部署方案 ①
- 部署方案 ② 【推薦】
- 部署方案 ③ 【推薦】
- 接口數據
- 隱藏 trace
- 數據表格中的刪除
- 修改數據
- layui 接口數據格式
- layuiAdmin iframe版
- iframe版部署
- 放入TP6.0視圖
- 登陸頁面驗證碼
- 引入authtree擴展組件
- 2020.1.24版 主頁成背景
- 經驗分享
- 章節停更說明
- PhpStudy-v8.1 無法解析PHP代碼
- 屏蔽Sublime的提示
- 正則匹配img標簽
- Sublime 3.x 激活碼
- windows dos 窗口命令 type
- windows dos 窗口命令 start
- apache配置主機
- navicat 閑置時間過久會卡死
- 命令行
- 簡介
- 生成控制器
- 生成模型類
- 生成驗證器
- 生成中間件
- 查看框架版本
- 清除緩存文件
- 生成應用目錄
- 自定義指令
- 自定義命令創建類文件
- 模板引擎
- 運算符
- 變量輸出
- 輸出替換
- 模板引擎
- 模板注釋
- 模板分離
- 模板繼承
- 基礎模板
- 區塊設計
- 內置標簽
- volist
- 資源文件
- 助手函數
- app
- 容器類
- url
- input
- redirect
- validate
- validate() 簡介
- 文件上傳驗證
- 傳入驗證器類名
- 傳入驗證規則數組
- 推薦用法
- cookie
- env
- 常用擴展
- flc/dysms
- 使用示例 ①
- 使用示例 ②
- qiniu/php-sdk
- 簡介
- 使用示例 ①
- 使用示例 ②
- liliuwei/thinkphp-jump
- 擴展介紹
- 下載擴展
- 使用方法
- topthink/think-captcha
- 安裝擴展
- 驗證碼顯示
- 更換驗證碼
- 驗證碼校驗
- 驗證碼配置
- 自定義驗證碼
- phpoffice/phpspreadsheet
- 數據寫入表格
- 讀取表格數據
- topthink/think-queue
- 安裝
- 自定義函數
- 任務類
- 帶有日志的任務類
- 更新日志
- 2021-08