shahr's avatar
Level 10

How to storage upload an image and save in database?

Why this code does not work?

public function store(CategoryRequest $request)
{
    $path = null;
    if ($request->hasFile('image')) {
        $file = $request->file('image');
        $nane = time();
        $extension = $request->file('image')->getClientOriginalExtension();
        $filename = $nane . '.' . $extension;
        $path = $request->file('image')->storeAs('images/categories/', $filename);
        $path = Storage::putFileAs('images/categories', $request->file('image'), $filename);
    }
    Category::create([
        'name' => $request->name,
        'latin' => $request->latin,
        'parent_id' => $request->parent_id,
        'image' => $path,
    ]);
    return redirect()->route('categories.index');
}

I added enctype="multipart/form-data" in my form tag now.

My code is does not uploads and does not save in database.

I tried in 10 hours but I did not solve my problem.

0 likes
14 replies
newbie360's avatar

did you see the image in the $request?

public function store(CategoryRequest $request)
{
    dd($request);

and can you show the form code

and what about you need update the image in the update method ?

newbie360's avatar

what showing inside the +request:

or always return false?

public function store(CategoryRequest $request)
{
    dd($request->hasFile('image'));

show the form code

Neeraj1005's avatar

@oxbir Try this and let me know

    if ($request->hasFile('image')) {
	$originalname = $request->image->getClientOriginalName();

        $extension = $request->image->extension();

        $uploadpath = $request->image->storeAs('images/categories', $originalname, 'public');
    }
Category::create([
        'name' => $request->name,
        'latin' => $request->latin,
        'parent_id' => $request->parent_id,
        'image' => $originalname,
    ]);
    return redirect()->route('categories.index');
shahr's avatar
Level 10

@neeraj1005

I tried this and it does not uploads and does not save in database.

newbie360's avatar
Level 24
public function store(CategoryRequest $request)
{
	$path = null;
	if ($request->hasFile('image'))
	{
		$file = $request->file('image');
		$nane = time();
		$extension = $file->getClientOriginalExtension();
		$fileName = $nane . '.' . $extension;
		$path = $file->storeAs('images/categories', $fileName);
		
		// just in case you want save to other disk
		//$path = $file->storeAs('images/categories', $fileName, 'disk_name');
	}
	
    Category::create([
        'name' => $request->name,
        'latin' => $request->latin,
        'parent_id' => $request->parent_id,
        'image' => $path,
    ]);
    return redirect()->route('categories.index');
}
1 like
astro_369's avatar

why are you overwriting first $path variable.... just dd($path) and see which one gives out correct url for your images.

shahr's avatar
Level 10

I tried this and it does upload and does not save in database.

newbie360's avatar

Edit: well, weird.. the table 'image' column is varchar type and nullable ?

change the 3 $path to $imagePath

and

dd($imagePath);

Category::create([
shahr's avatar
Level 10

It show "images/categories/1599840182.jpg"

SarwarAhmed's avatar

What you mean

it does upload and does not save in database.

Database saves just directory path. You may read this article

shahr's avatar
Level 10

The image field in database is now null

newbie360's avatar

no idea why still is null

in your model any

protected $casts = .......

// or

protected $attributes = .......

// or any Mutator ?

    public function setImageAttribute()
    {
        $this->attributes['image'] = ......
    }

if all not, make sure in the model have

protected $fillable = ['image'];

and try to get the new inserted record

	$category =	Category::create([
			'name' => $request->name,
			'latin' => $request->latin,
			'parent_id' => $request->parent_id,
			'image' => $imagePath,
		]);
		
	dd($category);
    return redirect()->route('categories.index');

if still can't. show the table migration

Please or to participate in this conversation.