我做了什么
当我研究在 laravel 中存储文件时。我遇到了两种方法。
- 将资产直接存储在公用文件夹中。
- 创建从
public/storage
到 的符号链接storage/app/public
当我研究哪一个两个使用时,我遇到了这个堆栈溢出链接。 将文件存储在公共目录和 Laravel 5.4 中存储之间的区别 在上面提到的答案中的这个链接中,
公共文件夹意味着文件可以公开访问。
例如
public/images/my-image.jpeg
,任何人都可以通过以下方式查看存储在其中的图像mysite.com/images/my-image.jpeg
但是,存储在 storage 目录中的文件仅对您的应用程序可用。
因为,包括上面提到的堆栈溢出帖子,以及我在不同平台上阅读的许多其他帖子,都暗示了public
目录中的文件可以通过网络访问而目录中的文件storage
不是这样的事实,我试图通过同时存储文件来测试这一点在public
目录和storage
目录中,一次一个,然后检查文件是否可以通过 web url 访问。
我的尝试如下,
- 首先,我在公共目录中添加了路径
images/
,并在该目录中放置了一些图像(让我们说test1.jpg
,test2.jpg
和test3.jpg
)。src
然后在我的标签属性的 刀片模板中,我img
将它们称为URL('images/test1.jpg')
等......并且它们确实在网页上呈现。然后我还尝试通过访问 url 从 url 访问图像http://localhost:8000/images/test.jpg
。结果与预期一致,图像在网页上呈现 + 可从 url 访问 - 然后我在
php artisan storage:link
控制台上运行命令,根据我阅读的文章,它应该symbolic link
在目录public/storage
和storage/app/public
. 运行命令后,我storage
在目录中创建了一个名为的新文件夹public
。然后我将所有图像移动到该public/storage
目录。然后将src
属性我的img
标签设置为URL('storage/test1.img')
等...图像在网页上呈现。然后我尝试检查图像是否仍然可以从 url 访问。为此,我去了 url 栏http://localhost:8000/storage/test1.jpg
。这些图像仍然可以从 url 访问。
问题
但是,根据我提到的答案和其他一些类似的链接,我希望这些图像无法从上面 2) 中的 url 访问,因为这些图像现在应该实际上位于storage/app/public
我们创建了指向 from 的符号链接的位置public/storage
。(storage
目录中的文件不应该公开访问吗?)
这让我想到了两个问题,
public/storage
为什么即使在我创建了指向的符号链接storage/app/public
并将图像存储在目录中之后,仍然可以从 url 访问图像public/storage
?- 就像我的情况一样,如果
public/storage
仍然可以通过 web url 访问文件中的文件,那么实际创建符号链接有什么好处?它似乎没有提供更多的安全性,因为仍然可以从 url 访问文件。
如果有人能帮助我理解上述两个问题的答案,那将非常有帮助。谢谢。