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

Moving file uploads to specific folder with Laravel

我在将上传的图片移动到正确的文件夹时遇到问题。当我上传它们时,它们只是转储到主 img 文件夹中,而不是转到特定的子文件夹中。

这是我的代码:

            $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();

您的 $path 中缺少一个 /。下面一行...

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

将生成一个字符串,类似于 123456789.jpg。然后在下一行你正在做...

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

img/rentals123456789.jpg 连接在一起,得到 img/rentals123456789.jpg。请注意 . 连接两个字符串。然后将生成的字符串传递给 public_path,它将引用 public 目录中名为 img 的文件夹和文件名 rentals123456789.jpg.

要解决您的问题,您只需在中间插入一个正斜杠:

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

这将在您的 public 路径和文件名 123456789.jpg.

中生成一个文件夹 img/rentals