【问题标题】:How to Access the Storage File如何访问存储文件
【发布时间】:2021-07-25 16:40:07
【问题描述】:

如何访问存储中的文件。

文件位置

storage/uploads/documentUpload/3_1620028799.PNG

记住php artisan storage link 将不起作用,因为文件不在 app/public 文件夹中。

文件 URL http://example.com/storage/uploads/logo/logo.png 404 错误。 有什么方法可以在 htaccess 中覆盖?

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

【问题讨论】:

  • 如果不在public 下,则无法公开访问。如果是这样,那将是一个安全问题。但是,您可以执行 this answer 之类的操作并在 Laravel 代码中流式传输文件。例如,如果您需要授权,这也允许您将路由放在中间件后面

标签: laravel .htaccess filesystems


【解决方案1】:

您可以在config/filesystems.php 中创建一个新磁盘,例如上传

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

config/filesystems.php 文件的末尾,为上传文件夹添加一个新的符号链接

'links' => [
    public_path('storage') => storage_path('app/public'),
    public_path('storage/uploads')  => storage_path('app/uploads'), // Add this
],

然后运行php artisan storage:link

只要你想得到文件的url,就运行

\Storage::disk('uploads')->url('documentUpload/3_1620028799.PNG');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2021-11-19
    • 2011-08-26
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多