服务器代码:
//在下载之前可以做权限验证,积分判断等,如果条件满足了,则提供下载,否则提示用户权限不足或权限不够,不允许下载。
//获取要下载的文件名称
string fileName = context.Request.QueryString["filename"];
//拼接文件路径
string url = "~/files/" + fileName;
//在响应用户前,设置响应报文头,告诉浏览器,如何处理当前的内容,是一个附件,需要下载
//HttpUtility.UrlEncode这句是解决文件名是中文是乱码问题
context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename="{0}"",HttpUtility.UrlEncode( fileName)));
//从磁盘中读取对应的文件,并反应给用户
context.Response.WriteFile(url);
客户端代码://注意这个直接添加文件名即可,路径在一般处理程序就获取到了。
<ul>
<li><a href="DownLoad.ashx?filename=0.gif">0.gif</a></li>
<li><a href="DownLoad.ashx?filename=1.png">1.png</a></li>
<li><a href="DownLoad.ashx?filename=2.cs">2.cs</a></li>
<li> <a href="DownLoad.ashx?filename=3.zip">3.zip</a></li>
<li> <a href="DownLoad.ashx?filename=哈哈.txt">哈哈.txt</a> </li>
</ul>