如何检索App_Data文件夹中的文件

时间:2014-08-22 20:13:38

标签: c# asp.net webforms

所以很多人都说不要将文件存储在数据库中,而是将它们(实际文件)保存在服务器文件夹中,并保存文件到数据库的路径。

问题是文件可以直接通过网址访问。例如,如果我将iamge放到名为:img的文件夹中,那么人们可以通过例如此网址轻松访问它:http://domain.com/img/photo.jpg

我的网络应用程序将有大量图像和文档,只有在您登录后才能使用。

我将它们放在App_Data文件夹中,因为它是一个安全的文件夹,以避免未经授权的用户访问它们,但我想在我的代码中无法检索它们...

例如:我无法获取用户的个人资料照片并将其显示在页面上...

SQL数据库: enter image description here

.aspx页面:

<asp:Image ID="imgProfile" runat="server" Width="150" Height="150" ToolTip="Profile Picture" />
在Page_Load事件中隐藏了<#c#代码:

   //Get name and path and save to ProfilePicture object
   //.....
   imgProfile.ImageUrl = ProfilePicture.path + ProfilePicture.name;

浏览器(Chrome)说:

Not allowed to load local resource: file:///C:/users/..../App_Data/User/userPicture/1/photo.JPG localhost:55700/Modules/User/Account/ProfilePicture.aspx:196
Failed to load resource: the server responded with a status of 404 (Not Found) 

那么这里最好的解决方案是什么,看起来我必须把它们放在数据库中......

1 个答案:

答案 0 :(得分:0)

AppData是一个依赖于用户的系统目录 它可以在c:\users\[username]\appdata下找到 你应该注意哪些appdata forlder IIS正在访问,因为它可能在不同于桌面的用户下运行
现在,在您的webapp上提供appdata内容是一种非常糟糕的做法 正确的方法,如果你坚持隐藏图像,你必须创建一个处理程序(.ashx),它将读取图像文件并返回。