123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Storage;
- class UploadController extends Controller
- {
- public function upload(Request $request)
- {
- // 验证请求
- $request->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
- ]);
- }
- }
|