123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- <?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-image';
- // 上传文件到指定的 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 uploadUserImage(Request $request)
- {
- // 验证请求
- $request->validate([
- 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048',
- ]);
- // 获取桶名
- $bucket = 'user-image';
- // 上传文件到指定的 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 uploadUserOther(Request $request)
- {
- // 验证请求
- $request->validate([
- 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048',
- ]);
- // 获取桶名
- $bucket = 'user-other';
- // 上传文件到指定的 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 uploadTechQualification(Request $request)
- {
- // 验证请求
- $request->validate([
- 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048',
- ]);
- // 获取桶名
- $bucket = 'te-qualification-image';
- // 上传文件到指定的 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 uploadTechnicianPhoto(Request $request)
- {
- // 验证请求
- $request->validate([
- 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048',
- ]);
- // 获取桶名
- $bucket = 'te-photo-image';
- // 上传文件到指定的 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 uploadTechOther(Request $request)
- {
- // 验证请求
- $request->validate([
- 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048',
- ]);
- // 获取桶名
- $bucket = 'te-other-image';
- // 上传文件到指定的 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 uploadOther(Request $request)
- {
- // 验证请求
- $request->validate([
- 'file' => 'required|file|mimes:jpg,jpeg,png,gif|max:2048',
- ]);
- // 获取桶名
- $bucket = 'other-image';
- // 上传文件到指定的 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);
- }
- }
|