使用Laravel将文件上载移动到特定文件夹

问题描述:

I am having issues getting my image uploads to move to the proper folders. When I upload them they just dump into the main img folder instead of going to the specific subfolder.

Here is the code I have:

            $rental = new Rental;

            $rental->title = $request->title;
            $rental->name = $request->name;
            $rental->description = $request->description;

             if ($request->hasFile('image')) {
                $image = $request->file('image');
                $filename = time() . '.' . $image->getClientOriginalExtension();
                $path = public_path('img/rentals' . $filename);
                 Image::make($image)->save($path);

                 $rental->image = $filename;
                }               

            $rental->save();

You're missing a / in your $path. The following line...

$filename = time() . '.' . $image->getClientOriginalExtension();

will generate a string, something like 123456789.jpg. Then in the next line you're doing...

$path = public_path('img/rentals' . $filename);

which joins together img/rentals and 123456789.jpg, resulting in img/rentals123456789.jpg. Notice that . which concatenates two strings. You're then passing the resulting string to public_path which will refer to a folder in your public directory named img and a filename rentals123456789.jpg.

To solve your problem you just need to stick a forward slash in between:

$filename = time() . '.' . $image->getClientOriginalExtension();
$path = public_path('img/rentals/' . $filename);

which will result in a folder img/rentals inside your public path and a filename of 123456789.jpg.