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