Laravel 5.4 从错误的路径获取图像

Laravel 5.4 fetching image from wrong path

我有一个表单可以将数据(包括图像)上传到我的数据库并从视图中访问该数据。问题是 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(),这将 return 绝对路径,而不是相对于您的文档根目录的路径或 public 路径(您想要的)。

当使用 move() 时,Laravel 使用相对于您的 public 路径的给定路径:

所以你可以简单的使用:

$mydata->img1920 = $request->file('img1920')->move('img/uploads', $filename);

其中 $filename 是您要调用的文件。


您还可以将 store()storeAs() 与配置的文件系统结合使用,其工作方式相同。

参见:Storing Uploaded Files

官方文档对辅助函数的说明如下public_path()

public_path()

The public_path function returns the fully qualified path to the public directory:

$path = public_path();

public_path returns 完全限定的路径。

而不是 public_path() 尝试使用 url()move()