52 lines
1.6 KiB
PHP
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;
|
|
}
|
|
}
|