doumo1807831 2018-06-03 14:22
浏览 140
已采纳

从Laravel中的存储服务文件(符号链接自定义存储路径)

I want to create a video sharing site for a spacific niche (mini-youtube kind of thing).

I have created the upload functionality successfully, and files are stored in storage/public/videos

I then created a symlink using php artisan storage:link

When I try to access the files using echo asset('storage/videos/file.mp4'); as stated at https://laravel.com/docs/5.6/filesystem

my html in the view looks like

<video controls>

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

</video>

QUESTION : What am I doing wrong or missing?

  • 写回答

1条回答 默认 最新

  • doulai7239 2018-06-03 14:40
    关注

    So from documentation:

    The public disk is intended for files that are going to be publicly accessible. By default, the public disk uses the local driver and stores these files in storage/app/public. To make them accessible from the web, you should create a symbolic link from public/storage to storage/app/public. This convention will keep your publicly accessible files in one directory that can be easily shared across deployments when using zero down-time deployment systems like Envoyer.

    as You understand when You do php artisan storage:link it does following:

    ln -s storage/app/public public/storage
    

    but You're keeping Your files in storage/public/videos that is not accessible (being linked) by documentation.

    2 solutions:

    1) You've to manually do (manually create symlinks):

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

    and in code to use it like: asset('storage/videos/file.mp4')

    2) Change file storage methods to store files by convention: storage/app/public/videos

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?