第一步:下載下傳sdk
下載下傳位址:https://github.com/aliyun/aliyun-oss-php-sdk?spm=a2c4g.11186623.2.9.451233bc4YHDpk
第二步:
将下載下傳下來的檔案,重命名為:alioss,放在extend檔案夾下面
第三步:
在application下配置檔案config.php中添加
//阿裡雲資源伺服器配置,裡面填寫你們自己的oss賬号的相關資訊
'aliyunOss'=>[
'KeyId' => '',
'KeySecret' =>'',
'Endpoint' => '',
'Bucket'=> ''
]
第四步:
編寫檔案上傳類
<?php
namespace app\common\controller;
use think\Controller;
use think\Config;
use think\Image;
use OSS\OssClient;
use OSS\Core\OssException;
class Alioss extends Controller
{
/*
測試函數
public function index(){
return $this->fetch('user/index');
}*/
/**
* 單檔案上傳
* $file = request()->file('file'); //擷取到上傳的檔案
* @param $file
* @return array|string
*/
public function uploadFile($file)
{
import('alioss.autoload',EXTEND_PATH,'.php');
$resResult = Image::open($file);
// 嘗試執行
try {
$config = Config::get('aliyunOss'); //擷取Oss的配置
//執行個體化對象 将配置傳入
$ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']);
//這裡是有sha1加密 生成檔案名 之後連接配接上字尾
$fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
//執行阿裡雲上傳
$result = $ossClient->uploadFile($config['Bucket'], $fileName, $file->getInfo()['tmp_name']);
$arr = [
'address:' => $result['info']['url'],
];
return $arr;
} catch (OssException $e) {
return $e->getMessage();
}
//将結果輸出
dump($arr);
}
/**
* 多圖檔上傳
* @param $file_arr
* @return array|string
*/
public function uploadarr($file_arr){
import('alioss.autoload',EXTEND_PATH,'.php');
foreach($file_arr as $key=>$val){
$resResult = Image::open($val);
// 嘗試執行
try {
$config = Config::get('aliyunOss'); //擷取Oss的配置
//執行個體化對象 将配置傳入
$ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']);
//這裡是有sha1加密 生成檔案名 之後連接配接上字尾
$fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
//執行阿裡雲上傳
$result = $ossClient->uploadFile($config['Bucket'], $fileName, $val->getInfo()['tmp_name']);
$arr[$key] = $result['info']['url'];
} catch (OssException $e) {
return $e->getMessage();
}
}//endforeach
return $arr;
}
/**
* 建立goods_img 删除多圖檔
* @param $token
*/
public function rm_image($objects){
// 阿裡雲主賬号AccessKey擁有所有API的通路權限,風險很高。強烈建議您建立并使用RAM賬号進行API通路或日常運維,請登入 https://ram.console.aliyun.com 建立RAM賬号。
import('alioss.autoload',EXTEND_PATH,'.php');
try{
$config = Config::get('aliyunOss'); //擷取Oss的配置
$ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']);
$ossClient->deleteObjects($config['Bucket'], $objects);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
}
}
第五步:調用
$file=$this->request->file();
$user_id=$this->request->post();
$alioss = new Alioss();
$arr = $alioss->uploadFile($file['file']);