ufutx.dma/app/Services/UploadService.php
2026-03-04 14:42:40 +08:00

100 lines
4.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Services;
use Exception;
use OSS\Core\OssException;
use OSS\OssClient;
class UploadService
{
public function upload($file)
{
try {
$type_arr = ['text/html', 'text/htm'];
if (in_array($file->getMimeType(), $type_arr)) return false;
$size = $file->getSize();
if ($size > 10 * 1024 * 1000) return false;
// dd($file->getClientOriginalName());
$path = Request()->path ? Request()->path : date('Y') . date('m') . "/" . date('d');
$object = $path . "/" . $file->getClientOriginalName();
$file_url = 'https://' . config('alioss.domain') . '/' . $object;
$access_key = config('alioss.id');
$access_secret = config('alioss.secret');
$endpoint = config('alioss.endpoint');
$ossClient = new OssClient($access_key, $access_secret, $endpoint);
$ossClient->uploadFile(config('alioss.bucket'), $object, $file->getPathname());
return $file_url;
} catch (OssException $e) {
throw new \Exception($e->getMessage());
}
}
//文件地址上传
public function uploadFile($file){
$access_key = config('alioss.id');
$access_secret = config('alioss.secret');
$endpoint = config('alioss.endpoint');
$ossClient = new OssClient($access_key, $access_secret, $endpoint);
//生成file
$object = date('Y').date('m')."/".date('d')."/".basename($file);
$url = 'https://'.config('alioss.domain').'/'.$object;
try {
// $result = $ossClient->putObject(config('alioss.buckets.picture'), $object, $file);
$result = $ossClient->uploadFile(config('alioss.bucket'), $object, $file);
} catch(Exception $e) {
// return $this->failure('oss_put_failure', $e->getMessage());
}
return $url;
}
public function getOssDir($dir) {
$access_key = config('alioss.id');
$access_secret = config('alioss.secret');
$endpoint = config('alioss.endpoint');
$bucket = config('alioss.bucket');
$ossClient = new OssClient($access_key, $access_secret, $endpoint);
$options = array(
'max-keys' => 1000, // 最大返回的object数量默认为100最大为1000
'delimiter' => '/', // 分隔符用来对返回的keys进行分组如果有Prefix则将Prefix后面的第一个分隔符及其后面的内容作为Key的前缀进行分组如果没有Prefix则从Bucket根目录开始
"prefix"=>$dir,
);
$listObjectInfo = $ossClient->listObjects($bucket, $options);
if ($listObjectInfo->getPrefixList() && !empty($listObjectInfo->getPrefixList())) {
$arr = [];
foreach ($listObjectInfo->getPrefixList() as $prefix) {
$arr[] = $prefix->getPrefix();
}
return $arr;
} else {
return [];
}
}
public function getOssFile($dir) {
$access_key = config('alioss.id');
$access_secret = config('alioss.secret');
$endpoint = config('alioss.endpoint');
$bucket = config('alioss.bucket');
$ossClient = new OssClient($access_key, $access_secret, $endpoint);
$options = array(
'max-keys' => 1000, // 最大返回的object数量默认为100最大为1000
'delimiter' => '/', // 分隔符用来对返回的keys进行分组如果有Prefix则将Prefix后面的第一个分隔符及其后面的内容作为Key的前缀进行分组如果没有Prefix则从Bucket根目录开始
"prefix"=>$dir,
);
$listObjectInfo = $ossClient->listObjects($bucket, $options);
if ($listObjectInfo->getObjectList() && !empty($listObjectInfo->getObjectList())) {
$arr = [];
foreach ($listObjectInfo->getObjectList() as $object) {
if ($object->getKey() == $dir) continue;
$arr[] = $object->getKey();
}
return $arr;
} else {
return [];
}
}
}