ufutx.love.util/app/Services/UploadService.php
2025-08-06 13:32:09 +08:00

52 lines
1.6 KiB
PHP

<?php
namespace App\Services;
use AlibabaCloud\Oss\V2 as Oss;
use Illuminate\Support\Facades\Log;
class UploadService
{
public function uploadFile($file): string
{
$bucket = config("alioss.bucket");
$host = config("alioss.host");
$fileName = $file->getFileName();
$fileType = $file->getClientOriginalExtension();
$key = date("Ym/d") . "/" . $fileName . time() . "." . $fileType;
$client = $this->newClient();
$acl = "default";
$storageClass = "Standard";
$request = new Oss\Models\PutObjectRequest($bucket, $key);
$body = Oss\Utils::streamFor(fopen($file, 'r'));
$request->body = $body;
$request->storageClass = $storageClass;
$request->acl = $acl;
$result = $client->putObject($request);
$url = $host . "/" . $key;
if ($result->statusCode == 200) {
return $url;
}
return "";
}
private function newClient(): Oss\Client
{
$region = config("alioss.region");
$endpoint = config("alioss.endpoint");
$accessId = config("alioss.id");
$accessSecret = config("alioss.secret");
$credentialsProvider = new Oss\Credentials\StaticCredentialsProvider($accessId, $accessSecret);
$cfg = new Oss\Config();
$cfg->setCredentialsProvider($credentialsProvider); // 设置凭证提供者
$cfg->setRegion($region);
$cfg->setConnectTimeout(10);
$cfg->setReadwriteTimeout(3600);
$cfg->setEndpoint($endpoint);
// 创建OSS客户端实例
$client = new Oss\Client($cfg);
return $client;
}
}