Laravel显示来自数据库中的路径的图像

时间:2017-06-08 09:07:31

标签: laravel laravel-5 laravel-5.4

因此,使用上传徽标,它的路径存储在数据库中,如下所示:

  

C:\ XAMPP \ htdocs中\ laravel \公共\标志\ 1496912432.jpg

我正在显示这样的图像:

<img class="images" id="image" src="{{$business->image}}" />

但是我收到了这个错误:

Not allowed to load local resource: file:///C:/xampp/htdocs/laravel/public/logo/1496912432.jpg

如何解决这个问题?

//修改

控制器:

public function image(Request $request) {
    if($request->hasFile('img'))
    {
        $image = Input::file('img');
        $filename = time() . '.' . $image->getClientOriginalExtension();
        $path = public_path('logo/' . $filename);
        Image::make($image->getRealPath())->fit(303, 200)->save($path);
        $file = $request->file('img');
        $session = session()->get('key');
        $update_image = Business::find($session);
        $update_image->image = $path;
        $update_image->save();
        return ['url' => url('logo/' . $filename)];
    }

3 个答案:

答案 0 :(得分:2)

使用Laravel file()存储文件https://laravel.com/docs/5.4/requests#files

将$ path存储到数据库

$path = $request->photo->store('logo');

$request->photo取决于您的输入文件属性名称。在您的情况下,它应该是$request->img

上面的代码将创建一个文件夹(如果不存在),即&#34; logo&#34;并使用随机字符串文件名存储到该文件夹​​。

同时检查您的配置文件,位于/config/filesystem.php。默认设置为public

使用asset函数从公用文件夹

获取完整路径
<img class="images" id="image" src="{{ asset($business->image }}" />

答案 1 :(得分:0)

你可以用两种方式做事

最佳方式是在图像保存时将更新URL路径保存到db

的URL路径
$path = $request->photo->store('logo'); // in 5.4

另一种方法,如果你不能改变数据库网址,你可以像这样做一些黑客

$file = explode('/public/', $business->image);
echo asset($file[1]);

答案 2 :(得分:0)

您希望将所有文件存储在Web根目录中。由于跨域安全性,您无法从http protcol访问file:// domain / protocol。通过使用Laravel进行存储和检索,它将来自同一主机。