Laravel 获取存储在存储公共文件夹中的文件的公共 URL

Posted

技术标签:

【中文标题】Laravel 获取存储在存储公共文件夹中的文件的公共 URL【英文标题】:Laravel get public url for file stored in storage public folder 【发布时间】:2021-09-08 17:05:01 【问题描述】:

在 Windows 上,我有 Xampp。我的应用程序在 Anuglar 和 Laravel 8 中 我将文件添加到存储文件夹中的公共文件夹。 filesystem.php中的配置:

'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

.env 文件中:

APP_URL=http://localhost:8082/prftbx-crm-api/public

公用文件夹中的文件:

 Directory of C:\xampp\htdocs\crm-api\storage\app\public

06/25/2021  11:01 AM    <DIR>          .
06/25/2021  11:01 AM    <DIR>          ..
04/26/2021  10:57 PM                14 .gitignore
06/25/2021  11:01 AM               510 381787c3ad1442cc882ee427e93af805.txt

在 Laravel 中,我使用方法返回 url:

$fileDTO->filePath = Storage::url($fileEntity->file_name);

而且我有地址:

/storage/381787c3ad1442cc882ee427e93af805.txt

当我在浏览器中输入 url 时:

http://localhost:8082/crm-api/public/storage/381787c3ad1442cc882ee427e93af805.txt

我收到404,找不到文件

【问题讨论】:

【参考方案1】:

首先运行以下命令

php artisan storage:link

那么你可以

http://localhost:8082/storage/381787c3ad1442cc882ee427e93af805.txt

将应用网址保留为

APP_URL=http://localhost:8082

如文件所述

应用程序文件系统中包含的公共磁盘 配置文件适用于将要公开的文件 无障碍。默认情况下,公共磁盘使用本地驱动程序和 将其文件存储在 storage/app/public 中。

要使这些文件可以从 Web 访问,您应该创建一个 从 public/storage 到 storage/app/public 的符号链接。利用 此文件夹约定会将您可公开访问的文件保存在一个文件夹中 使用零时可以轻松跨部署共享的目录 像 Envoyer 这样的停机部署系统。

要创建符号链接,您可以使用 storage:link Artisan 命令:

php artisan storage:link 一旦文件被存储并且符号 链接已创建,您可以使用 资产助手:

参考:https://laravel.com/docs/8.x/filesystem#the-public-disk

【讨论】:

以上是关于Laravel 获取存储在存储公共文件夹中的文件的公共 URL的主要内容,如果未能解决你的问题,请参考以下文章

未找到 Laravel 公共存储文件夹

将图像保存在公共文件夹中,而不是存储 laravel 5

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

在Laravel 5中,如何获取公用文件夹中所有文件的列表?

Laravel 存储符号链接图像视图

Android 媒体文件保存公共存储目录获取Uri