【发布时间】:2020-08-25 13:06:05
【问题描述】:
我知道这个文件夹App_Data 通常用于数据库文件等,但我现在想要这个用于图像,想法是用户将图像上传到这个文件夹并且可以从网站访问它们,我基本上希望App_Data 是现在使用/认为是普通文件夹,有人知道该怎么做吗?只是权限设置还是这个文件夹不能像普通文件夹一样使用。在此先感谢:)
【问题讨论】:
标签: c# asp.net-mvc permissions data-access app-data
我知道这个文件夹App_Data 通常用于数据库文件等,但我现在想要这个用于图像,想法是用户将图像上传到这个文件夹并且可以从网站访问它们,我基本上希望App_Data 是现在使用/认为是普通文件夹,有人知道该怎么做吗?只是权限设置还是这个文件夹不能像普通文件夹一样使用。在此先感谢:)
【问题讨论】:
标签: c# asp.net-mvc permissions data-access app-data
ApplicationData 是应用程序数据的文件夹。您在那里存储什么样的数据取决于您。请注意,Windows 上有 3 个:
通常那里的数据应该是特定于该用户的数据 - 当然,CommonApplicationData 除外。在用户之间共享,是“通用”前缀文件夹的用途。
但是问题的其余部分没有意义。您希望用户手动将内容放在那里,以便网站可以上传吗?你似乎也认为它不是一个“正常”的文件夹?
网站不能随机访问文件系统。因此,用户在那里导航真的很烦人。如果循环中还有另一个程序,你还没有告诉我们。
而且文件夹很正常。操作系统存储了一个可以更改的路径(并且文件自动移动),但除此之外它是正常的。未知的位置是为什么您应该始终使用 https://docs.microsoft.com/en-us/dotnet/api/system.environment.specialfolder 从操作系统中检索实际值
编辑:
根据您的评论,我现在明白了。您正在编写一个网站。您想知道为什么服务器无法访问 AppData 文件夹。当然,直到现在我才正确地注意到 MVC。
Web 服务器特别容易受到黑客攻击。 24/7 在线,一些众所周知的框架和广泛的可访问性作为核心目标。因此,它们通常在可能的最严格的用户权限下运行。
对服务器程序和 Instances 内容目录的读取访问权限 - 不再有任何期望,也不应该被授予。可能在临时文件内容的子文件夹中写入访问权限 - 但有更好的解决方案,涉及数据库和 HTTP 处理程序。
解决方案:
如果您希望您的图片可用,请将它们放入此实例的 Content 目录的子文件夹中。但是,您确实应该被视为带有 HTTP 处理程序的数据库存储:https://www.red-gate.com/simple-talk/sql/learn-sql-server/an-introduction-to-sql-server-filestream/ 有些人甚至为图像提供了一个单独的专用 Web 服务器。但我怀疑你还没有达到那个规模。
【讨论】: