Files
x-server-mobile/backend/app/controller/UploadController.php
T
2026-03-05 17:18:44 +08:00

174 lines
4.8 KiB
PHP

<?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 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());
}
}
}