要求
` PHP >= 7.0`
安裝
` composer require "johnlui/aliyun-oss `
配置
`組件下載完成之后,需要在 app/config/oss.php 中寫入六項配置(個人推薦)`
可在.env文件中添加適量配置(根據(jù)實際數(shù)據(jù)填寫)
寫入配置后注意使用 php artisan config:clear
清除配置緩存
構(gòu)建 Services 文件
后臺需要一個 Service 文件, 在 app/Service 下新建一個 OSS.php 文件
附上代碼:
<?php
namespace App\Services;
/**
* @Author: zhanhaisheng
* @String: OSS文件存儲
*/
use JohnLui\AliyunOSS;
use Exception;
use DateTime;
class OSS {
/* 城市名稱:
*
* 經(jīng)典網(wǎng)絡(luò)下可選:杭州区宇、上海、青島易茬、北京、張家口戴甩、深圳尊沸、香港、硅谷帽衙、弗吉尼亞、新加坡贞绵、悉尼厉萝、日本、法蘭克福榨崩、迪拜
* VPC 網(wǎng)絡(luò)下可選:杭州谴垫、上海、青島蜡饵、北京弹渔、張家口、深圳溯祸、硅谷肢专、弗吉尼亞舞肆、新加坡、悉尼博杖、日本椿胯、法蘭克福、迪拜
*/
private $ossClient;
/**
* 私有初始化 API剃根,非 API哩盲,不用關(guān)注
* @param boolean 是否使用內(nèi)網(wǎng)
*/
public function __construct($isInternal = false)
{
if (config('app.NetworkType') == 'VPC' && !$isInternal) {
throw new Exception("VPC 網(wǎng)絡(luò)下不提供外網(wǎng)上傳、下載等功能");
}
$this->ossClient = AliyunOSS::boot(
config('app.City'),
config('app.NetworkType'),
$isInternal,
config('app.AccessKeyId'),
config('app.AccessKeySecret')
);
}
/**
* 使用外網(wǎng)上傳文件
* @param string 上傳之后的 OSS object 名稱
* @param string 上傳文件路徑
* @return boolean 上傳是否成功
*/
public static function upload($ossKey, $filePath, $options = [])
{
$oss = new OSS(config('app.IsInternal'));
$oss->ossClient->setBucket(config('app.BucketName'));
return $oss->ossClient->uploadFile($ossKey, $filePath, $options);
}
/**
* 使用外網(wǎng)直接上傳變量內(nèi)容
* @param string bucket名稱
* @param string 上傳之后的 OSS object 名稱
* @param string 上傳的變量
* @return boolean 上傳是否成功
*/
public static function uploadContent($ossKey, $content, $options = [])
{
$oss = new OSS(config('app.IsInternal'));
$oss->ossClient->setBucket(config('app.BucketName'));
return $oss->ossClient->uploadContent($ossKey, $content, $options);
}
/**
* 使用外網(wǎng)刪除文件
* @param string bucket名稱
* @param string 目標(biāo) OSS object 名稱
* @return boolean 刪除是否成功
*/
public static function deleteObject($ossKey)
{
$oss = new OSS(config('app.IsInternal'));
$oss->ossClient->setBucket(config('app.BucketName'));
return $oss->ossClient->deleteObject(config('app.BucketName'), $ossKey);
}
/**
* 復(fù)制存儲在阿里云OSS中的Object
*
* @param string $sourceBuckt 復(fù)制的源Bucket
* @param string $sourceKey - 復(fù)制的的源Object的Key
* @param string $destBucket - 復(fù)制的目的Bucket
* @param string $destKey - 復(fù)制的目的Object的Key
* @return Models\CopyObjectResult
*/
public function copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey)
{
$oss = new OSS(config('app.IsInternal')); // 上傳文件使用內(nèi)網(wǎng)狈醉,免流量費
return $oss->ossClient->copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey);
}
/**
* 移動存儲在阿里云OSS中的Object
*
* @param string $sourceBuckt 復(fù)制的源Bucket
* @param string $sourceKey - 復(fù)制的的源Object的Key
* @param string $destBucket - 復(fù)制的目的Bucket
* @param string $destKey - 復(fù)制的目的Object的Key
* @return Models\CopyObjectResult
*/
public function moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey)
{
$oss = new OSS(config('app.IsInternal')); // 上傳文件使用內(nèi)網(wǎng)廉油,免流量費
return $oss->ossClient->moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey);
}
public static function getUrl($ossKey)
{
$oss = new OSS();
$oss->ossClient->setBucket(config('app.BucketName'));
return $oss->ossClient->getUrl($ossKey, new \DateTime("+1 day"));
}
public static function createBucket($bucketName)
{
$oss = new OSS();
return $oss->ossClient->createBucket($bucketName);
}
public static function getAllObjectKey($bucketName)
{
$oss = new OSS();
return $oss->ossClient->getAllObjectKey($bucketName);
}
/**
* 獲取指定Object的元信息
*
* @param string $bucketName 源Bucket名稱
* @param string $key 存儲的key(文件路徑和文件名)
* @return object 元信息
*/
public static function getObjectMeta($bucketName, $osskey)
{
$oss = new OSS();
return $oss->ossClient->getObjectMeta($bucketName, $osskey);
}
}
?>
以上操作完畢就可以完美使用Aliyun OSS文件系統(tǒng)了
注意:先引入后使用,咳咳
原作者=====地址奉上:johnlui AliyunOSS