Heroku,accesing laravel存储文件夹

Heroku,accesing laravel存储文件夹,laravel,heroku,Laravel,Heroku,当按钮点击时,应该会在空白页中打开一个“resume.pdf”文件。它在localhost上运行良好,但在heroku上执行时,效果不佳。我认为这条路错了,但我不知道该走哪条路 composer.json "post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize", "chmod -R 775 public/", "chmod -R 775 storage/" ], index.php &

当按钮点击时,应该会在空白页中打开一个“resume.pdf”文件。它在localhost上运行良好,但在heroku上执行时,效果不佳。我认为这条路错了,但我不知道该走哪条路

composer.json

"post-install-cmd": [
  "php artisan clear-compiled",
  "php artisan optimize",
  "chmod -R 775 public/",
  "chmod -R 775 storage/"
],
index.php

<a class="btn btn-xl btn-outline-light" href="storage/resume.pdf" target="_blank">
    <i class="fa fa-folder-open-o mr-2"></i>
    View Resume!
</a>


因此,这个答案有两个部分

第一,默认情况下,
存储
不可公开访问:

要从web访问它们,您应该创建一个从public/storage到storage/app/public的符号链接。此约定将使您的公共可访问文件保存在一个目录中,当使用Envoyer等零停机时间部署系统时,可以轻松地在部署之间共享该目录

(您可能在本地这样做过一次,但忘记了。或者,您的本地服务器正在耗尽应用程序的主文件夹,而不是
public
子文件夹。)

但是…

在Heroku上,文件系统是短暂的它不是永久性的。如果您进行了新的部署,或者如果您进行了放大/缩小,或者如果Heroku需要重新启动/替换实例,则您的用户上载到
存储中的所有文件都将清除


相反,您将希望将用户上传的内容存储在类似AmazonS3的地方,Laravel使之变得简单。一旦您配置了S3密钥,您就可以使用S3而不是本地即将擦除的磁盘来执行类似于
Storage::disk('S3')
的操作。

当然,如果您只是将自己的文件放入
Storage
并将其签入版本控制,以便与应用程序一起部署,考虑把它们放在<代码>公共< /代码>中,以便于使用。为您保存一个符号链接。嗯,我已经创建了指向/public的符号链接“/storage/resume.pdf”,但它仍然不起作用。所以,正如你告诉我的,我只是将pdf文件公开。现在很好用。但是,不确定访问/存储文件夹的解决方案