2017-11-19 4 views
0

Ich versuche, Bild in Datenbank mit Laravel 5.4 einfügen. Es klappt. Aber wenn ich dieses Verzeichnis suche, erscheint es dort nicht. Ich möchte auch nur Bilder validieren sollte Upload und Größe sein. Danke für den Fortschritt.Bild in Öffentlichen Ordner hochladen

Meine Controller-Funktion ist hier

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use DB; 
use Hash; 
use App\User; 
class regController extends Controller 
{ 

public function create(Request $request) 
{ 
    $this-> validate(request(),[ 
    'name' => 'required', 
    'email'=> 'required', 
    'type' => 'required', 
    'image' => 'required', 
    'password' => 'required|confirmed|min:6', 
    ]); 

    $request['password'] = bcrypt($request -> password); 

    $User = new User($request->input()) ; 
    if($file = $request->hasFile('image')) { 

     $file = $request->file('image') ; 

     $fileName = $file->getClientOriginalName() ; 
     return Storages::putFile('public/images',$request->file('image')); 
     $destinationPath = public_path().'images/' ; 
     $file->move($destinationPath,$fileName); 
     $User->image = $fileName ; 
    } 

    $user = 
      User::create(request(['name','email','type','image','password'])); 
    return redirect('login'); 
} 
+0

'return' Rest des Codes beendet, ist es noch' Storage' ist –

Antwort

2

try this:

// Validation 
$this->validate($request, [ 
    'image' => 'required|image|mimes:jpeg,bmp,png|max:10240' // size in kelobytes this equals 10 mb 
]); 

$User = new User() ; 
$User->password = bcrypt($request->password); 
$User->name = $request->name; 
$User->type = $request->type; 
$User->email = $request->email; 
$filename = $this->getFileName($request->image); 
$request->image->move(base_path('public/images'), $filename); 
$User->image = $fileName; 
$$User->save(); 
return back()->with('success','Image Upload successful'); 

ich nur vergessen, Ihnen zu zeigen, Wie zu implementieren getFileName Funktion, um einen eindeutigen Dateinamen zu erstellen sorry darüber, in Ihrem Controller y ou kann es als geschützte Methode wie so definiert werden:

protected function getFileName($file) 
{ 
    return str_random(32) . '.' . $file->extension(); 
} 
+0

Der Dateiname wird in der Datenbank angezeigt, aber nicht im Verzeichnis public/images ...... – Mithun

+0

Ihr Formular muss' enctype = "multipart/form-data "' legen zum formular~~POS=TRUNC –

+1

Es zeigt "BadMethodCallException Methode [getFileName] existiert nicht." – Mithun

0

Ich glaube, Sie sind tryin smth wie dies zu tun:

public function fileUpload(Request $request) 

{ 

    $this->validate($request, [ 

     'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', 

    ]); 


    $image = $request->file('image'); 

    $input['imagename'] = time().'.'.$image->getClientOriginalExtension(); 

    $destinationPath = public_path('/images'); 

    $image->move($destinationPath, $input['imagename']); 


    $this->postImage->add($input); 


    return back()->with('success','Image Upload successful'); 

} 
+0

Es zeigt Fehler „ FatalThrowableError Aufruf an eine Elementfunktion getClientOriginalExtension() auf null“ – Mithun

+0

Übergeben Sie das Bild an die URL ?. Hat Ihr Formular-Tag das Attribut enctype = "multipart/form-data"? – crazy1337

+0

Mithun

Verwandte Themen