request->get("file_names", []); $files=$this->request->file("files"); if($files === null){ return []; } foreach ($files as $index => $file) { $item = $this->uploadFile($this->request, $file); $item['file']['title'] = $fileNames[$index] ?? $item['file']['title']; $items[] = $item; } $uploadedFiles = $this->storeFiles($items); return $uploadedFiles; } protected function uploadFile(Request $request, UploadedFile $file): array { $extension = $file->getClientOriginalExtension() ? $file->getClientOriginalExtension(): pathinfo($file->getClientOriginalName(), PATHINFO_EXTENSION); $pathname = $file->storeAs( sprintf("c%s/%s/%s", uniqid(), $request->get("object_type"), date("Ymd")), sprintf("%s.%s", md5(uniqid()), $extension) ); throw_validation_if(! $pathname, "File upload failed."); $data['file'] = [ 'pathname' => $pathname, 'title' => $file->getClientOriginalName(), 'size' => $file->getSize(), 'extension' => $extension, 'company_id' => uniqid(), 'object_type' => $request->object_type, 'source' => $request->get("source", 1), ]; return $data; } protected function storeFiles(array $items) { $uploadedFiles = []; foreach ($items as $item) { $fileInfo = $item['file']; $file = File::query()->create($fileInfo); $uploadedFiles[] = new FileUploadSuccessResource($file); } return $uploadedFiles; } }