77 lines
2.1 KiB
PHP
77 lines
2.1 KiB
PHP
|
|
<?php
|
|||
|
|
namespace app\common\util;
|
|||
|
|
|
|||
|
|
use OSS\OssClient;
|
|||
|
|
use OSS\Core\OssException;
|
|||
|
|
|
|||
|
|
class AliyunOSS
|
|||
|
|
{
|
|||
|
|
// OSS配置信息
|
|||
|
|
const ACCESS_KEY_ID = 'your_access_key_id';
|
|||
|
|
const ACCESS_KEY_SECRET = 'your_access_key_secret';
|
|||
|
|
const ENDPOINT = 'oss-cn-hangzhou.aliyuncs.com';
|
|||
|
|
const BUCKET = 'your_bucket_name';
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取OSS客户端实例
|
|||
|
|
* @return OssClient
|
|||
|
|
* @throws OssException
|
|||
|
|
*/
|
|||
|
|
public static function getClient()
|
|||
|
|
{
|
|||
|
|
try {
|
|||
|
|
return new OssClient(
|
|||
|
|
self::ACCESS_KEY_ID,
|
|||
|
|
self::ACCESS_KEY_SECRET,
|
|||
|
|
self::ENDPOINT
|
|||
|
|
);
|
|||
|
|
} catch (OssException $e) {
|
|||
|
|
throw new OssException('创建OSS客户端失败:' . $e->getMessage());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 上传文件到OSS
|
|||
|
|
* @param string $filePath 本地文件路径
|
|||
|
|
* @param string $objectName OSS对象名称
|
|||
|
|
* @return array
|
|||
|
|
* @throws OssException
|
|||
|
|
*/
|
|||
|
|
public static function uploadFile($filePath, $objectName)
|
|||
|
|
{
|
|||
|
|
try {
|
|||
|
|
$client = self::getClient();
|
|||
|
|
|
|||
|
|
// 上传文件
|
|||
|
|
$result = $client->uploadFile(self::BUCKET, $objectName, $filePath);
|
|||
|
|
|
|||
|
|
// 获取文件访问URL
|
|||
|
|
$url = $client->signUrl(self::BUCKET, $objectName, 3600);
|
|||
|
|
|
|||
|
|
return [
|
|||
|
|
'success' => true,
|
|||
|
|
'url' => $url,
|
|||
|
|
'object_name' => $objectName,
|
|||
|
|
'size' => filesize($filePath),
|
|||
|
|
'mime_type' => mime_content_type($filePath)
|
|||
|
|
];
|
|||
|
|
} catch (OssException $e) {
|
|||
|
|
return [
|
|||
|
|
'success' => false,
|
|||
|
|
'error' => $e->getMessage()
|
|||
|
|
];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 生成OSS对象名称
|
|||
|
|
* @param string $originalName 原始文件名
|
|||
|
|
* @return string
|
|||
|
|
*/
|
|||
|
|
public static function generateObjectName($originalName)
|
|||
|
|
{
|
|||
|
|
$ext = pathinfo($originalName, PATHINFO_EXTENSION);
|
|||
|
|
$name = md5(uniqid(mt_rand(), true));
|
|||
|
|
return date('Y/m/d/') . $name . '.' . $ext;
|
|||
|
|
}
|
|||
|
|
}
|