validate([ 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048', 'bucket' => 'required|string', // 验证桶名 ]); // 获取桶名 $bucket = $request->input('bucket'); // 上传文件到指定的 S3 桶 $path = $request->file('file')->store('uploads', $bucket); // 获取文件名 $filename = basename($path); // 生成文件的 URL $url = Storage::disk($bucket)->url($path); // 返回文件名和 URL return response()->json([ 'filename' => $filename, 'url' => $url, // 返回文件的 URL ], 201); } public function uploadProjectCate(Request $request) { // 验证请求 $request->validate([ 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048', ]); // 获取桶名 $bucket = 'project-cate'; // 上传文件到指定的 S3 桶 $path = $request->file('file')->store('uploads', $bucket); // 获取文件名 $filename = basename($path); // 生成文件的 URL $url = Storage::disk($bucket)->url($path); // 返回文件名和 URL return response()->json([ 'filename' => $filename, 'url' => $url, // 返回文件的 URL ], 201); } public function download(Request $request) { // 获取桶名 $bucket = $request->input('bucket'); $filename = $request->input('filename'); // 从指定的 S3 桶获取文件 $filePath = 'uploads/' . $filename; if (!Storage::disk($bucket)->exists($filePath)) { return response()->json(['message' => 'File not found.'], 404); } // 返回文件下载响应 return Storage::disk($bucket)->download($filePath); } public function view(Request $request) { // 获取桶名 $bucket = $request->input('bucket'); $filename = $request->input('filename'); // 从指定的 S3 桶获取文件 $filePath = 'uploads/' . $filename; if (!Storage::disk($bucket)->exists($filePath)) { return response()->json(['message' => 'File not found.'], 404); } // 获取文件的大小和 MIME 类型 $size = Storage::disk($bucket)->size($filePath); $mimetype = Storage::disk($bucket)->mimeType($filePath); $url = Storage::disk($bucket)->url($filePath); // 生成文件的 URL // 返回文件的元数据和 URL return response()->json([ 'filename' => $filename, 'size' => $size, 'mimetype' => $mimetype, 'url' => $url, // 返回文件的 URL ]); } }