app\models\UserContestEntry::upload PHP Метод

upload() публичный статический Метод

public static upload ( Illuminate\Http\UploadedFile $file, $user, $contest = null )
$file Illuminate\Http\UploadedFile
    public static function upload(UploadedFile $file, $user, $contest = null)
    {
        $entry = new static();
        DB::transaction(function () use($entry, $file, $user, $contest) {
            $entry->save();
            // get id
            $entry->user()->associate($user);
            $entry->contest()->associate($contest);
            $entry->filesize = $file->getClientSize();
            $entry->original_filename = $file->getClientOriginalName();
            $entry->storeFile($file->getRealPath(), $file->getClientOriginalExtension());
            $entry->save();
        });
        return $entry;
    }

Usage Example

 public function store()
 {
     if (Request::hasFile('entry') !== true) {
         abort(422);
     }
     $user = Auth::user();
     $contest = Contest::findOrFail(Request::input('contest_id'));
     priv_check('ContestEntryStore', $contest)->ensureCan();
     $allowedExtensions = [];
     $maxFilesize = 0;
     switch ($contest->type) {
         case 'art':
             $allowedExtensions[] = 'jpg';
             $allowedExtensions[] = 'jpeg';
             $allowedExtensions[] = 'png';
             $maxFilesize = 4000000;
             break;
         case 'beatmap':
             $allowedExtensions[] = 'osu';
             $maxFilesize = 1000000;
             break;
         case 'music':
             $allowedExtensions[] = 'mp3';
             $maxFilesize = 15000000;
             break;
     }
     if (!in_array(strtolower(Request::file('entry')->getClientOriginalExtension()), $allowedExtensions, true)) {
         abort(422);
     }
     if (Request::file('entry')->getClientSize() > $maxFilesize) {
         abort(413);
     }
     UserContestEntry::upload(Request::file('entry'), $user, $contest);
     return $contest->userEntries($user);
 }