上传
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
|
||||
namespace app\controller;
|
||||
|
||||
use app\Service\UploadService;
|
||||
use Webman\Http\Request;
|
||||
use Webman\Http\Response;
|
||||
|
||||
/**
|
||||
* 文件上传控制器
|
||||
*/
|
||||
class UploadController extends BaseController
|
||||
{
|
||||
private UploadService $uploadService;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->uploadService = new UploadService();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用文件上传接口
|
||||
*/
|
||||
public function upload(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$userId = $this->getUserId($request); // 可选,没有token则为null
|
||||
$partition = $request->post('partition', 'other');
|
||||
$category = $request->post('category', 'general');
|
||||
|
||||
$result = $this->uploadService->upload($request, $partition, $category, $userId);
|
||||
|
||||
return $this->success($result, '上传成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片上传接口
|
||||
*/
|
||||
public function uploadImage(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$userId = $this->getUserId($request); // 可选,没有token则为null
|
||||
$category = $request->post('category', 'general');
|
||||
|
||||
$result = $this->uploadService->uploadImage($request, $category, $userId);
|
||||
|
||||
return $this->success($result, '上传成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 头像上传接口
|
||||
*/
|
||||
public function uploadAvatar(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$userId = $this->getUserId($request); // 可选,没有token则为null
|
||||
|
||||
$result = $this->uploadService->uploadAvatar($request, $userId);
|
||||
|
||||
return $this->success($result, '头像上传成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 二手车图片上传接口
|
||||
*/
|
||||
public function uploadUsedCarImage(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$userId = $this->getUserId($request); // 可选,没有token则为null
|
||||
|
||||
$result = $this->uploadService->uploadUsedCarImage($request, $userId);
|
||||
|
||||
return $this->success($result, '上传成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量上传图片(二手车专用)
|
||||
*/
|
||||
public function batchUploadImages(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$userId = $this->getUserId($request); // 可选,没有token则为null
|
||||
$files = $request->files();
|
||||
|
||||
if (empty($files)) {
|
||||
return $this->error('请选择要上传的文件');
|
||||
}
|
||||
|
||||
$results = [];
|
||||
$errors = [];
|
||||
|
||||
foreach ($files['files'] ?? [] as $index => $file) {
|
||||
try {
|
||||
// 创建临时请求对象处理单个文件
|
||||
$tempRequest = new Request(
|
||||
$request->method(),
|
||||
$request->path(),
|
||||
$request->headers(),
|
||||
['file' => $file]
|
||||
);
|
||||
|
||||
$result = $this->uploadService->uploadUsedCarImage($tempRequest, $userId);
|
||||
$results[] = $result;
|
||||
} catch (\Exception $e) {
|
||||
$errors[] = [
|
||||
'index' => $index,
|
||||
'error' => $e->getMessage(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $this->success([
|
||||
'success' => $results,
|
||||
'errors' => $errors,
|
||||
'total' => count($results),
|
||||
'failed' => count($errors),
|
||||
], '批量上传完成');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
*/
|
||||
public function deleteFile(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$userId = $this->getUserId($request); // 可选,用于权限验证
|
||||
$fileId = (int)$request->post('id');
|
||||
|
||||
if ($fileId <= 0) {
|
||||
return $this->error('无效的文件ID');
|
||||
}
|
||||
|
||||
$this->uploadService->deleteFile($fileId, $userId);
|
||||
|
||||
return $this->success(null, '删除成功');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件信息
|
||||
*/
|
||||
public function getFileInfo(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$fileId = (int)$request->get('id');
|
||||
|
||||
if ($fileId <= 0) {
|
||||
return $this->error('无效的文件ID');
|
||||
}
|
||||
|
||||
$info = $this->uploadService->getFileInfo($fileId);
|
||||
|
||||
return $this->success($info);
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分区配置
|
||||
*/
|
||||
public function getPartitionConfig(Request $request): Response
|
||||
{
|
||||
try {
|
||||
$configs = UploadService::getPartitionConfigs();
|
||||
|
||||
return $this->success($configs);
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user