public function newReview(Request $request) { $this->validate($request, ['review_name' => 'required|max:255', 'file' => 'required']); $id = uniqid(); $name = $request->input('review_name'); $file = $request->file('file'); $review = new Review(); $review->id = $id; $review->name = $name; $review->save(); if ($file->getMimeType() == 'application/zip') { $zip = zip_open($request->file('file')->getPathName()); if (is_resource($zip)) { while ($zip_entry = zip_read($zip)) { $name = zip_entry_name($zip_entry); $size = zip_entry_filesize($zip_entry); if (zip_entry_open($zip, $zip_entry, 'r')) { $contents = zip_entry_read($zip_entry, $size); $finfo = new \finfo(FILEINFO_MIME_TYPE); $type = $finfo->buffer($contents); if (in_array($type, File::$AcceptTypes) && File::IsValidNameName($name)) { $dbFile = new File(); $dbFile->review_id = $id; $dbFile->contents = $contents; $dbFile->type = $type; $dbFile->name = $name; $dbFile->size = $size; $dbFile->save(); } } zip_entry_close($zip_entry); } } } else { $dbFile = new File(); $dbFile->review_id = $id; $dbFile->contents = file_get_contents($request->file('file')->getPathname()); $dbFile->type = $file->getMimeType(); $dbFile->name = $file->getClientOriginalName(); $dbFile->size = $file->getClientSize(); $dbFile->save(); } return redirect('reviews/' . $id); }