文件下载控制问题

bl_xin 2008-07-06 04:11:41
根据要求,要用.net 我用的是C#,做一个文件上下传的小系统,能上传文件,能下载文件。
遇到的问题是,下载需要权限,比如将权限给到页面上,或者怎样,不是每个文件每个用户都能下载。
但是我不知道如何实现,用户如果知道了文件的绝对地址,就绕开认证直接下下去了。
问题可能比较简单,希望知道的给个方向,谢谢!
...全文
87 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztltgg 2008-07-07
  • 打赏
  • 举报
回复
关键是不要把下载的文件直接放在iis目录下,就不能越过验证下载了
zywinner168 2008-07-07
  • 打赏
  • 举报
回复
6楼的很好啊,直接粘贴复制就可以用了。
aiyumen 2008-07-07
  • 打赏
  • 举报
回复
以读取文件流的方式提供下载
private void Download(string FileName)
{

System.IO.FileStream r = new System.IO.FileStream(FileName, System.IO.FileMode.Open);
//设置基本信息
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.AddHeader("Connection", "Keep-Alive");
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(FileName));
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", r.Length.ToString());
while (true)
{
//开辟缓冲区空间
byte[] buffer = new byte[1024];
//读取文件的数据
int leng = r.Read(buffer, 0, 1024);
if (leng == 0)//到文件尾,结束
break;
if (leng == 1024)//读出的文件数据长度等于缓冲区长度,直接将缓冲区数据写入
System.Web.HttpContext.Current.Response.BinaryWrite(buffer);
else
{
//读出文件数据比缓冲区小,重新定义缓冲区大小,只用于读取文件的最后一个数据块
byte[] b = new byte[leng];
for (int i = 0; i < leng; i++)
b[i] = buffer[i];
System.Web.HttpContext.Current.Response.BinaryWrite(b);
}
}
r.Close();//关闭下载文件
System.IO.File.Delete(FileName);
System.Web.HttpContext.Current.Response.End();//结束文件下载
}
guyan033 2008-07-07
  • 打赏
  • 举报
回复
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=text.txt");
Response.BinaryWrite(要下载的文件流)
Response.END();
这样就不用有人知道在址了,也没地址
michaelowenii 2008-07-07
  • 打赏
  • 举报
回复
通过一个download.aspx页面传递下载文件的ID进行下载


download.aspx页面负责权限控制
bl_xin 2008-07-07
  • 打赏
  • 举报
回复
谢谢楼上所有人!
daxiong105 2008-07-06
  • 打赏
  • 举报
回复
学习
bl_xin 2008-07-06
  • 打赏
  • 举报
回复
谢谢回复!
第一条,我觉得如果想知道很容易啊。随便用个下载工具下载,都会记录直接地址的。
我就是不知道现在流行的做法是怎么做到的。
hy_lihuan 2008-07-06
  • 打赏
  • 举报
回复
第一、你需要避免别人知道你文件的直接地址吧;比如控制权限的下载按钮;
第二、下载能否控制盗链的问题;
使用第一个实现就基本能够满足你的要求

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧