【问题标题】:Laravel, How can i get a file from storage without symlink?Laravel,如何在没有符号链接的情况下从存储中获取文件?
【发布时间】:2020-09-26 13:34:45
【问题描述】:

我的存储有问题。 如何在没有符号链接的情况下从存储中获取文件?

当我尝试从文件存储中获取视频到 HTML 视频标签时,我得到了“禁止”或“不允许加载本地资源”。

控制器:

$url = Storage::url($file);  
return view('video')->with('url',$url);

HTML 标签:

<video width="600" height="400" controls>
         <source src="{{url($url)}}" type="video/mp4">
         Your browser does not support the video tag.
         Votre navigateur ne supporte pas le lecteur vidéo.
</video>

感谢您的帮助:)

【问题讨论】:

    标签: laravel laravel-storage


    【解决方案1】:

    存储的想法是它可能驻留在您的网络服务器无法访问的地方,或者至少可以公开访问。它可以是一个文件夹,可以是 S3 存储,也可以是其他东西。

    您需要做的是定义专门下载视频文件的路径。您可以在控制器代码中生成该路由的临时签名 URL:https://laravel.com/docs/7.x/urls#signed-urls

    将该签名的 URL 发送到视图。现在浏览器将从签名的 URL 加载视频。您需要创建路由和控制器函数以从存储中加载文件并将其发送到浏览器:https://laravel.com/docs/7.x/filesystem#downloading-files

    【讨论】:

    • 谢谢你,我还有一个问题。如何使用一些中间件保护“公共/存储”路由?有可能吗?
    • 如果public/storage 文件夹存在,网络服务器将自行处理对该文件夹的文件请求。它只会将文件发送给用户,而无需启动您的 laravel 应用程序。您可以在 laravel 应用程序中定义自己的路径来下载文件,并且您可以在该路径上添加您想要的任何中间件。
    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多