May 1, 2020
19
Level 1
Tmp File upload issue
Hi Everyone,
I have been trying to upload an image however everytime I upload it. It changes the location and file type to a temporary file. I don't understand why it isn't working as I have set the save and move path for the image.
I should get this "/images/game/default.jpg" but instead I get this "/images/game/C:\Users\Sandie\AppData\Local\Temp\phpA573.tmp"
Here is my code
Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Game;
use App\Series;
use PhpParser\Parser\Multiple;
use App\Http\Controllers\Auth;
class GameController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$games = Game::all();
$series = Series::all();
return view('games.index', compact(['games', 'series']));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$series = Series::all();
// dd($series);
return view('games.create', compact('series'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required|min:2',
'series' => 'required',
'online' => 'required',
'multiplayers' => 'required',
'complete' => 'required',
'image' => 'image|mimes:jpg,jpeg,bmp,svg,png|max:5000',
]);
$image = new game;
if (request()->has('image')){
$image = request()->file('image');
$imagename = time().'.'.$image->getClientOriginalExtension();
$imagesave = public_path('/images/game/');
$image -> move($imagesave,$imagename);
}
// $game = Game::create([
// 'name' => $request->input('name'),
// 'online' => $request->input('online'),
// 'series_id' => $request->input('series'),
// 'mutliplayer_id' => $request->input('multiplayers'),
// 'completed' => $request->input('complete'),
// ]);
$game = Game::create([
'name' => $request->input('name'),
'online' => $request->input('online'),
'series_id' => $request->input('series'),
'mutliplayer_id' => $request->input('multiplayers'),
'completed' => $request->input('complete'),
'image' => '/images/game/'.$image,
]);
// $game['image'] = '/images/game/'.$image;
// Game::create([$game]);
return redirect()->route('games.all');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$game = Game::find($id);
//adds validation to form
$request->validate([
'name' => 'required|min:2',
'series' => 'required',
'online' => 'required',
'multiplayers' => 'required',
'complete' => 'required',
]);
//updates game information
$game->update([
'name' => $request->input('name'),
'online' => $request->input('online'),
'series_id' => $request->input('series'),
'mutliplayer_id' => $request->input('multiplayers'),
'completed' => $request->input('complete'),
'image' => $request->input('image'),
]);
$game->save();
return redirect()->route('games.all');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$game = Game::find($id);
$game->delete();
return redirect()->back();
}
//searches database for games which name matches search
public function getSearch()
{
$results = Game::all();
return view('search.form', compact('results'));
}
public function searchResults(Request $request)
{
$searchTerm = $request->input('search');
$series = Series::all();
$results = Game::where('name', 'like', '%' . $searchTerm . '%')->get();
return view('search.results')->with(['results' => $results, 'series' => $series]);
}
// filter for games that are completed
public function getCompleted(Request $request)
{
$series = Series::all();
$results = Game::where('completed', 1)->get();
return view('games.index')->with(['games' => $results, 'series' => $series]);
}
//filter for games with multiplayer
public function getMultiplayer(Request $request)
{
$series = Series::all();
$results = Game::where('mutliplayer_id', 1)->get();
return view('games.index')->with(['games' => $results, 'series' => $series]);
}
//filter for games with online
public function getOnline(Request $request)
{
$series = Series::all();
$results = Game::where('online', 1)->get();
return view('games.index')->with(['games' => $results, 'series' => $series]);
}
}
Model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Series;
//relationships
class Game extends Model
{
protected $fillable =['name','completed','online','series_id','mutliplayer_id','image'];
public function series(){
return $this->belongsTo(Series::class);
}
}
Views
{{-- Create viewe for games --}}
@extends('layouts.app')
@section ('content')
<div class="col-md-6 offset-md-3">
<h1 class="text-center "> Add New Game </h1>
<form action="{{route('games.create')}}" method="post" enctype="multipart/form-data">
@csrf
{{-- calls template for update/add --}}
{{-- Game create/update form --}}
<div class="form-group">
<label for="name">Name </label>
<input type="text" class="form-control @error('name') is-invalid @enderror" name="name" id="name" value ="{{old('name')? old('name') :"" }}">
@error('name')
<span class="invalid-feedback text-danger" role="alert">
<strong>{{ $message }} </strong>
</span>
@enderror
</div>
<div class="form-group">
<label for="series">Series </label>
<select name="series" class="form-control @error('series') is-invalid @enderror" id="series">
<option value= "" > please select</option>
@foreach ($series as $seri)
<option value="{{$seri->id}}" {{old('series') == $seri->id ? "selected" : ""}} > {{$seri->name}}</option>
@endforeach
</select>
@error('series')
<span class="invalid-feedback text-danger" role="alert">
<strong>{{ $message }} </strong>
</span>
@enderror
</div>
<div class="form-group">
<label for="online">Online </label>
<select name="online" class="form-control @error('online') is-invalid @enderror" id="online" >
<option value=""> please select</option>
<option value="1"> Yes </option>
<option value="0"> No</option>
</select>
@error('online')
<span class="invalid-feedback text-danger" role="alert">
<strong>{{ $message }} </strong>
</span>
@enderror
</div>
<div class="form-group">
<label for="multiplayers"> Multiplayers</label>
<select name="multiplayers" class="form-control @error('multiplayers') is-invalid @enderror" id="multiplayers">
<option value=""> please select</option>
<option value="1"> Yes </option>
<option value="0"> No</option>
</select>
@error('multiplayers')
<span class="invalid-feedback text-danger" role="alert">
<strong>{{ $message }} </strong>
</span>
@enderror
</div>
<div class="form-group">
<label for="complete"> Completed game?</label>
<select name="complete" class="form-control @error('complete') is-invalid @enderror" id="complete">
<option value=""> please select</option>
<option value="1"> Yes </option>
<option value="0"> No</option>
</select>
@error('complete')
<span class="invalid-feedback text-danger" role="alert">
<strong>{{ $message }} </strong>
</span>
@enderror
</div>
<div class="form-group">
<label for="image">Image </label>
<input type="file" class="form-control @error('image') is-invalid @enderror" name="image" id="image" value ="default.jpg">
@error('image')
<span class="invalid-feedback text-danger" role="alert">
<strong>{{ $message }} </strong>
</span>
@enderror
</div>
<div class="form-group">
<button type="submit" class="btn btn-info float-right"> Add New Game</button>
</div>
</form>
</div>
@endsection
Any help with this would be greatly appreciated.
Thanks For Looking, Sandie-fee :)
Please or to participate in this conversation.