增加後台圖檔旋轉功能。加強報名地址檢查。修正前台文字。增加前後台報名欄位。設定報名欄位TWID為UNIQUE。修正前台報名可以連續送出的問題。
This commit is contained in:
@ -6,6 +6,8 @@ use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
use Intervention\Image\Drivers\Gd\Driver;
|
||||
use Intervention\Image\ImageManager;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
|
||||
|
||||
@ -38,4 +40,43 @@ class StorageController extends Controller
|
||||
'Content-Security-Policy' => "frame-ancestors 'self'", // Allow iframe on same domain
|
||||
]);
|
||||
}
|
||||
|
||||
public function imageRotation90(Request $request, $file_path)
|
||||
{
|
||||
$allowed_directory = 'uploads';
|
||||
$file_path = str_replace(['../', '..\\'], '', $file_path);
|
||||
$full_path = storage_path("app/{$allowed_directory}/{$file_path}");
|
||||
|
||||
if (is_dir($full_path)) {
|
||||
throw new NotFoundHttpException('檔案不存在');
|
||||
}
|
||||
|
||||
if (!Storage::disk('local')->exists("{$allowed_directory}/{$file_path}")) {
|
||||
throw new NotFoundHttpException('檔案不存在');
|
||||
}
|
||||
|
||||
$real_path = realpath($full_path);
|
||||
$allowed_base_path = realpath(storage_path("app/{$allowed_directory}"));
|
||||
if (!$real_path || strpos($real_path, $allowed_base_path) !== 0) {
|
||||
throw new AccessDeniedHttpException('無權訪問該檔案');
|
||||
}
|
||||
$mime_type = mime_content_type($full_path) ?: 'application/octet-stream';
|
||||
|
||||
$allowedMimeTypes = [
|
||||
'image/png', // PNG
|
||||
'image/jpeg', // JPG/JPEG
|
||||
'image/git' // git
|
||||
];
|
||||
|
||||
if (!in_array($mime_type, $allowedMimeTypes)) {
|
||||
throw new \Exception('檔案類型錯誤,只接受.jpg/.jpeg/.png/.gif');
|
||||
}
|
||||
|
||||
$manager = new ImageManager(Driver::class);
|
||||
$image = $manager->read($full_path);
|
||||
$image = $image->rotate(-90);
|
||||
$image->save(quality:100);
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user