存储文件夹的图像路径不正确:Laravel 5.2.31

时间:2016-06-05 12:30:57

标签: php laravel laravel-5 laravel-5.1 laravel-5.2

我在刀片中有以下图片标记。

{!! Form::image('/MySplash/1/file.png', $alt="Photo", null) !!}

以下是我在路线档案中的代码..

Route::get('MySplash/{IconID}/{UniqueFileName}', function ($IconID, $filename)
{
    $path = storage_path() . '/SplashScreenIcons/' . $IconID . '/' . $filename;

    if(!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;;
});

最后我得到了如下图片网址。

http://localhost/SportsApp/public/MySplash/1/file.png

问题是什么

  
      
  1. 它没有进入路线。
  2.   
  3. 网址正在公开展示。而图像文件夹位于存储目录中。
  4.   

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

Form::image()创建一个使用文件资源的HTML输入。渲染此输入及其图像的路径将直接调用您的GET路线。该框架假定您提供了一个静态路径,并且默认情况下只是将其映射到public目录,以便浏览器检索资源。

您将图标保留在storage中,这意味着这些文件不公开。如果您在基于Linux的环境中工作或在本地使用Homestead,那么在客户端使图标可用的最简单方法是创建从public文件夹到storage的符号链接,像这样:

ln -s /home/vagrant/Code/myproject/storage/SplashScreenIcons /home/vagrant/Code/myproject/public/MySplash

然后,您可以像往常一样使用Form帮助程序:

{!! Form::image('/MySplash/1/file.png', $alt="Photo", null) !!}

或使用asset()帮助程序:

<input src="{{'MySplash/1/file.png'}}" type="image">

要记住的一件事是,您还需要生产中的符号链接,例如:作为部署钩子。