我有一个将数据(包括图像(上传到我的数据库并从视图访问该数据的表单。问题是 laravel 从错误的路径获取数据。无论如何,这就是为什么 - 存储在数据库中的路径读取为; http://localhost/var/www/html/theproject/public/img/uploads/img.jpg
这当然是无法访问的,因为它应该是; http://localhost/theproject/public/img/uploads/img.jpg
这是我用来将位置路径设置为"img/uploads"的控制器代码;
$location = public_path('img/uploads');
$mydata->img1920 = $request->file('img1920')->move($location);
$mydata->save();
并通过这样的视图访问
<img src="{{ $mydata->img1920 }}" >
那么为什么 laravel 在路径中包含/var/www/html?
您正在使用public_path()
它将返回绝对路径,而不是相对于文档根目录或公共路径(您想要的(的路径。
move()
时,Laravel 使用相对于公共路径的给定路径:
因此,您可以简单使用:
$mydata->img1920 = $request->file('img1920')->move('img/uploads', $filename);
但是,您要调用文件的位置$filename
。
您还可以将store()
或storeAs()
与配置的文件系统结合使用,它们的工作方式相同。
请参阅: 存储上载的文件
官方文档对帮助程序函数public_path()
public_path((
public_path 函数将完全限定的路径返回到 公共目录:
$path = public_path((;
public_path
返回完全限定的路径。
与其尝试使用url()
或move()
,不如尝试使用public_path()