代码之家  ›  专栏  ›  技术社区  ›  PHPer

从laravel中的存储中提供文件(symlink自定义存储路径)

  •  0
  • PHPer  · 技术社区  · 6 年前

    我想创建一个视频分享网站为一个空间利基(迷你YouTube之类的东西)。

    我已成功创建上载功能,文件存储在 storage/public/videos

    然后我使用 php artisan storage:link

    当我试图使用 echo asset('storage/videos/file.mp4'); 如所述 https://laravel.com/docs/5.6/filesystem

    视图中的HTML看起来像

    <video controls>
    
    <source src="{{ asset('storage/videos/file.mp4') }}" type="video/mp4">
    
    </video>
    

    问题 :我做错了什么或错过了什么?

    1 回复  |  直到 6 年前
        1
  •  3
  •   num8er    6 年前

    所以从 documentation :

    公共磁盘用于将要公开的文件 无障碍。默认情况下,公共磁盘使用本地驱动程序和 将这些文件存储在 存储/应用程序/公共 . 使他们可以从 在web上,您应该创建一个符号链接 公共/存储 存储/应用程序/公共 . 本会议将使您的 一个目录中的文件,可以轻松地跨部署共享 当使用像特使这样的零停机时间部署系统时。

    当你明白的时候 php artisan storage:link 它的作用如下:

    ln -s storage/app/public public/storage
    

    但是你把你的文件放在 storage/public/videos 文档无法访问(链接)的。

    2种解决方案:

    1)您必须手动执行(手动创建符号链接):

    ln -s storage/public/videos public/storage/videos
    

    在代码中使用它,比如: asset('storage/videos/file.mp4')

    2)更改文件存储方法以按约定存储文件: storage/app/public/videos

    推荐文章