Laravel 存储符号链接图像视图

Posted

技术标签:

【中文标题】Laravel 存储符号链接图像视图【英文标题】:Laravel storage symlink image view 【发布时间】:2017-12-29 09:39:53 【问题描述】:

我创建了一个符号链接来在我的视图中显示保存在存储目录中的图像。

为此我运行了这个命令:

ln -s /Users/myname/code/myApp/storage/app /Users/myname/code/myApp/public/storage

这确实在公共内部创建了一个存储文件夹,该存储文件夹包含一个文件夹名称 images,我想在我的视图中显示它。

我试图这样向他们展示:

<img src=" asset('storage/app/' . $categoryValue->category_avatar) " />

但图像标签仍然为空,我收到以下错误消息:

获取 http://myapp.dev/storage/app/images/TpHsZhQBMVdihEtSwiPo6hz36l1hE2K5joFfaerB.jpeg 404(未找到

路径正确,但仍然不显示图像。

【问题讨论】:

【参考方案1】:

尝试路线:

    Route::get('storage/folder/filename', function ($folder,$filename)

    $path = public_path('storage/' .$folder.'/'. $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;
);

【讨论】:

【参考方案2】:

您在创建符号链接时指定了错误的目录作为源文件,您应该更改:

ln -s /Users/myname/code/myApp/storage/app /Users/myname/code/myApp/public/storage

到:

ln -s /Users/myname/code/myApp/storage/app/public /Users/myname/code/myApp/public/storage

或者您可以使用storage:link Artisan 命令:

php artisan storage:link

然后,您可以使用 asset 帮助器创建一个 URL:

<img src=" asset('storage/file.txt') " />

【讨论】:

这样做&lt;img src=" asset('storage/' . $imageValue-&gt;image) " /&gt; 没有奏效,尽管它是正确的路径。 @35Hunne $imageValue-&gt;image 是否包含后缀?【参考方案3】:

看来您的链接不正确。应该是

storage/app/public -> public/storage

(您错过了 public 部分)。为了避免目录错误,您应该使用特殊的Artisan command:

php artisan storage:link

【讨论】:

这样做&lt;img src=" asset('storage/' . $imageValue-&gt;image) " /&gt; 没有奏效,尽管它是正确的路径。 @35Hunne 你的变量$imageValue-&gt;image 包含什么?

以上是关于Laravel 存储符号链接图像视图的主要内容,如果未能解决你的问题,请参考以下文章

在laravel 5.4(存储文件夹)中更改默认的“符号链接”文件夹

共享主机上的Laravel存储符号链接

laravel 中的存储说符号链接 - 没有这样的文件

配置文件图片的 Laravel Spark 符号链接不起作用

未找到 Laravel 公共存储文件夹

图像不会上传到Laravel Project中的public_html文件夹