Home > Software design >  i have problem with laravel fileupload image
i have problem with laravel fileupload image

Time:11-29

can someone help me, i want to add article with image. image has successfully entered the directory but in the database the name is always D:\xampp\tmp\php......tmp.

I have changed the system file to public.

Controller

    public function store(Request $request)
    {
        //

        $validateData = $request->validate([
            'title' => 'required|max:255',
            'thumbnail' => 'image|file|max:8192',
            'slug' => 'required',
            'description' => 'required',
        ]);
        if ($request->file('thumbnail')) {
            $imageName = time().'.'.$request->file('thumbnail')->getClientOriginalExtension();
            $validatedData['thumbnail'] = $request->thumbnail->move(public_path('uploads/article/'), $imageName);
        }
             
        //dd($validateData['thumbnail']);
        Article::create($validateData);
        return redirect('/admin-article')->with('success', 'Data has been successfully added');
    }

CodePudding user response:

Try this

if ($request->file('thumbnail')) {
   $imageName = time().'.'.$request->file('thumbnail')->getClientOriginalExtension();
   $request->thumbnail->move(public_path('uploads/article/'), $imageName);
   $validatedData['thumbnail'] = url('uploads/article/'.$imageName);
}

The reason why it's return a path instead of url because you're using public_path instead of url()

CodePudding user response:

Controller Code

public function store(Request $request)
{
    $validateData = $request->validate([
        'title'       => 'required|max:255',
        'thumbnail'   => 'image|file|max:8192',
        'slug'        => 'required',
        'description' => 'required',
    ]);

    // Check if request has file
    if($request->hasFile('thumbnail')){
        // Get File
        $file = $request->file('thumbnail'); 
        // Get File Extention
        $fileGetFileExtension = $file->getClientOriginalExtension(); 
        // Create customized file name
        $fileName = Str::random(20).'_'.date('d_m_Y_h_i_s').'.'.$fileGetFileExtension; 
        // Save File to your storage folder
        Storage::disk('public')->put('uploads/article/'.$fileName,File::get($file));
    }else{
        $fileName = null;
    }

    $validatedData['thumbnail'] = $fileName;

    Article::create($validateData);

    return redirect('/admin-article')->with('success', 'Data has been successfully added');
}

Run php artisan storage:link, if not created

In blade you can get your file like this

<a href="{{ url('storage/uploads/article/'.$actical->thumbnail) }}"></a>

I hope this helps. :D

  • Related