|
7 | 7 | use Pion\Laravel\ChunkUpload\Exceptions\UploadMissingFileException; |
8 | 8 | use Pion\Laravel\ChunkUpload\Handler\HandlerFactory; |
9 | 9 | use Illuminate\Http\UploadedFile; |
| 10 | +use Illuminate\Support\Facades\Validator; |
| 11 | +use App\Rules\SecureFile; |
10 | 12 |
|
11 | 13 | class FileUploadController extends Controller |
12 | 14 | { |
@@ -58,6 +60,16 @@ public function upload(Request $request) |
58 | 60 | */ |
59 | 61 | protected function saveFile(UploadedFile $file) |
60 | 62 | { |
| 63 | + $allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'zip', 'rar', 'pdf', 'doc', 'docx', 'fbx', 'obj', 'blend', 'stl', 'gltf', 'glb']; |
| 64 | + |
| 65 | + $validator = Validator::make(['file' => $file], [ |
| 66 | + 'file' => ['required', 'file', new SecureFile($allowedExtensions)], |
| 67 | + ]); |
| 68 | + |
| 69 | + if ($validator->fails()) { |
| 70 | + abort(422, $validator->errors()->first()); |
| 71 | + } |
| 72 | + |
61 | 73 | $fileName = $this->createFilename($file); |
62 | 74 | $fileSize = $this->formatSizeUnits($file->getSize()); |
63 | 75 | // Group files by mime type |
@@ -88,7 +100,8 @@ protected function saveFile(UploadedFile $file) |
88 | 100 | protected function createFilename(UploadedFile $file) |
89 | 101 | { |
90 | 102 | $extension = $file->getClientOriginalExtension(); |
91 | | - $filename = str_replace("." . $extension, "", $file->getClientOriginalName()); // Filename without extension |
| 103 | + $originalName = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME); |
| 104 | + $filename = \Illuminate\Support\Str::slug($originalName); |
92 | 105 |
|
93 | 106 | // Add timestamp hash to name of the file |
94 | 107 | $filename .= "_" . md5(time()) . "." . $extension; |
|
0 commit comments