126 lines
3.9 KiB
PHP
126 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace app\common\controller;
|
|
|
|
use app\common\service\OssService;
|
|
use app\common\traits\ResponseTrait;
|
|
use support\Request;
|
|
use Shopwwi\WebmanFilesystem\Facade\Storage;
|
|
|
|
class UploadController
|
|
{
|
|
|
|
use ResponseTrait;
|
|
|
|
protected $noNeedLogin = ['proxy'];
|
|
|
|
protected $noNeedHeaderData = ['proxy'];
|
|
|
|
public function upload(Request $request)
|
|
{
|
|
try {
|
|
$scene = $request->input('scene', 'image');
|
|
$file = $request->file('file');
|
|
if ($file && $file->isValid()) {
|
|
$pathUrl = '/uploads/'.$scene.'/'.date('Ymd').'/'.md5($file->getUploadName() . time()).'.'.$file->getUploadExtension();
|
|
$fullPathUrl = public_path() . $pathUrl;
|
|
$file->move($fullPathUrl);
|
|
$data = [
|
|
'domain' => getenv('MAIN_DOMAIN'),
|
|
'file_url' => $pathUrl,
|
|
'full_url' => getenv('MAIN_DOMAIN') . $pathUrl,
|
|
'scene' => $scene,
|
|
];
|
|
return $this->success($data, 'upload success');
|
|
}
|
|
return $this->error('file not found');
|
|
} catch (\Throwable $e) {
|
|
return $this->error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
// 上传单文件附件
|
|
public function uploadFile(Request $request)
|
|
{
|
|
try {
|
|
$file = $request->file('file');
|
|
|
|
if (!$file || !$file->isValid()) {
|
|
return $this->error('上传失败');
|
|
}
|
|
$originalName = $file->getUploadName();
|
|
|
|
$result = Storage::adapter('oss')
|
|
->path('vehicle_album/'.date('Ymd'))
|
|
->size(1024*1024*5)
|
|
->upload($file);
|
|
|
|
$ossservice = new OssService();
|
|
|
|
$data = [
|
|
'original_name' => $originalName,
|
|
'file_name' => $result->file_name,
|
|
'file_url' => $ossservice->generatePrivateUrl($result->file_name)
|
|
];
|
|
|
|
return $this->success($data);
|
|
}catch (\Throwable $e){
|
|
return $this->error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
// 上传单文件图片
|
|
public function uploadImage(Request $request)
|
|
{
|
|
try {
|
|
$file = $request->file('image');
|
|
|
|
if (!$file || !$file->isValid()) {
|
|
return $this->error('上传失败');
|
|
}
|
|
|
|
$result = Storage::adapter('oss')
|
|
->path('vehicle_album/'.date('Ymd'))
|
|
->size(1024*1024*5)
|
|
->extYes(['image/jpeg','image/png'])
|
|
->extNo(['image/gif'])
|
|
->upload($file);
|
|
|
|
$ossservice = new OssService();
|
|
|
|
$data = [
|
|
'href' => $result->file_name,
|
|
'alt' => '',
|
|
'url' => $ossservice->generatePrivateUrl($result->file_name)
|
|
];
|
|
|
|
return json(['errno' => 0, 'data' => $data]);
|
|
// return $this->success($data);
|
|
} catch (\Throwable $e) {
|
|
return json(['errno' => 1, 'message' => $e->getMessage()]);
|
|
// return $this->error($e->getMessage());
|
|
}
|
|
}
|
|
|
|
public function proxy(Request $request)
|
|
{
|
|
$filePath = $request->get('file'); // 原OSS文件路径
|
|
try {
|
|
// 生成签名URL
|
|
$signedUrl = (new \app\common\service\OssService())->generatePrivateUrl($filePath);
|
|
|
|
// 获取图片数据并返回
|
|
$imageData = file_get_contents($signedUrl);
|
|
|
|
// 根据文件类型设置Content-Type
|
|
$mime = mime_content_type('data://application/octet-stream;base64,'.base64_encode($imageData));
|
|
|
|
return response($imageData, 200, [
|
|
'Content-Type' => $mime,
|
|
'Cache-Control' => 'public, max-age=600' // 客户端缓存10分钟
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return response('Image not found '.$e->getMessage(), 404);
|
|
}
|
|
}
|
|
} |