所以很多人都说不要将文件存储在数据库中,而是将它们(实际文件)保存在服务器文件夹中,并保存文件到数据库的路径。
问题是文件可以直接通过网址访问。例如,如果我将iamge放到名为:img的文件夹中,那么人们可以通过例如此网址轻松访问它:http://domain.com/img/photo.jpg
我的网络应用程序将有大量图像和文档,只有在您登录后才能使用。
我将它们放在App_Data文件夹中,因为它是一个安全的文件夹,以避免未经授权的用户访问它们,但我想在我的代码中无法检索它们...
例如:我无法获取用户的个人资料照片并将其显示在页面上...
SQL数据库:
.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)
那么这里最好的解决方案是什么,看起来我必须把它们放在数据库中......
答案 0 :(得分:0)
AppData是一个依赖于用户的系统目录
它可以在c:\users\[username]\appdata
下找到
你应该注意哪些appdata forlder IIS正在访问,因为它可能在不同于桌面的用户下运行
现在,在您的webapp上提供appdata内容是一种非常糟糕的做法
正确的方法,如果你坚持隐藏图像,你必须创建一个处理程序(.ashx),它将读取图像文件并返回。