![]() |
1
2
根据文件的大小,一个选项是将文件存储在Web根目录之外,这样就没有人可以热链接到这些文件,然后,正如所建议的那样,生成一个接受一些参数和 Response.WriteFile() 来自所述目录。 如果文件很大,您可能需要使用 Response.TransmitFile 在服务器上保存一些内存。 从实现的角度来看,我可能会将文件的真实名称存储在数据库中,以避免命名冲突,并将重命名为guid或从数据库表中获取的整数ID的文件保存在磁盘上。 然后,将文件写入输出流时,可以使用 content disposition header 将文件重新命名为原始名称。 嗯! |
![]() |
2
0
您可能需要一个每个用户有一个文件夹的文件夹结构。你可以自己写
编辑:
为了澄清这一点,我假设您使用的是ASP.NET成员资格功能(尽管不一定完全是这样),它允许您将
|
![]() |
3
0
另一种方法是将所有文件放在一个地方,静态地不允许任何人访问这些文件,然后拥有一个通用的处理程序。(
注意:我特意将此作为一个单独的答案发布,这样您可以将您喜欢的解决方案标记为您的答案,而忽略另一个。 |
![]() |
4
0
您可以在IIS中创建一个与网站根目录相邻的虚拟目录(作为兄弟目录),这可以做到以下几点:1)通过猜测文件位置,防止用户直接访问文件;2)可以将虚拟目录指向您希望的任何位置;3)在目录浏览关闭的情况下,可以防止任何人看到E结构。然后可以将路径存储在数据库中,进一步从客户机中删除实际结构。 |
![]() |
5
0
我已经实现了这样的解决方案。我将文件存储在网站中的受保护(通过web.config节)文件夹中,但我使用guid而不是真正的文件名。我还有一个将guid映射到实名的数据库,还有一些额外的信息,比如文件大小、类型等。在您的例子中,这些信息还可以包含上载文件的用户的名称。 为了下载文件,我实现了HTTP处理程序,该处理程序将获得一个guid参数,并基于文件类型设置适当的HTTP头,并将文件的内容写入响应。在将文件写入响应之前,我还检查了当前用户的权限。然后我有一个页面,它将文件名列表呈现为超链接,指向带有guid参数的HTTP处理程序,该参数对应于受保护文件夹中的特定文件。 为了上传,我使用了非常好的Slickupload控件: http://krystalware.com/Products/SlickUpload/ |
![]() |
user1946932 · .Net正则表达式在所有字符前添加空格 5 月前 |
![]() |
TSDrake · 发布ASP。没有特定文件夹的.NET应用程序 6 月前 |
![]() |
Vengat Ramanan · 用户登录Asp时隐藏导航和页脚。网络核心 10 月前 |
![]() |
ramamoorthy_villi · 输入验证错误外键字段 10 月前 |
![]() |
Enderbyte09 · ASP。NET Core绝对拒绝在其他端口上托管 11 月前 |