/** * Perform a file upload. * @param UploadedFile $file * @param $move boolean - move or copy the file? * @return \Exception|FileException|Media */ public static function upload(UploadedFile $file, $move = true) { Media::unguard(); $media = new Media(['file_type' => $file->getClientMimeType(), 'file_name' => $file->getClientOriginalName(), 'file_size' => $file->getSize(), 'title' => basename($file->getClientOriginalName(), "." . $file->getClientOriginalExtension())]); // Don't overwrite the file. Give it a new name. $media->file_name = Media::getUniqueName($media->path()); try { if ($move) { $file->move(dirname($media->path()), $media->file_name); } else { copy($file->getPathname(), $media->path()); } } catch (FileException $error) { return $error; } $media->etag = md5_file($media->path()); $media->save(); // Create cropped image sizes, if any specified. foreach (config('media.crops') as $directory => $callable) { $media->generate($directory, $callable); } Media::reguard(); return $media; }