对于制作下载页面的体会

一、相关的两个页面downlink.aspx、down.aspx
1、downlink.aspx
在downlink.aspx中放置一个下载链接如 down.aspx?id=值 ,并在前台代码的<head>节中加入以下代码:
<script language="javascript">
    function DownDvasp(htmlurl)
    {var newwin=window.open(htmlurl,'','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,alwaysLowered=no,z-look=no ');return false;}
    </script>
在下载链接中加入以下代码:
<asp:HyperLink ID="HyperLinkdown" runat="server">点击下载</asp:HyperLink>

在后台代码中加入以下代码:
if(下载条件)
{
      this.HyperLinkdown.NavigateUrl = "down.aspx?id=" + id;
      this.HyperLinkdown.Attributes.Add("onclick", "return DownDvasp(this.href);");       //此语句的作用是只要点击了此链接就会弹出一个无工具栏、地址栏、状态栏的新窗口,以便用此窗口盛载down.aspx的内容。这样起到隐藏下载文件的真实地址的作用。
}
else
{
       this.HyperLinkdown.Text = "此课件为会员课件,您未登陆或剩余点数不足!";
}
2、down.aspx
在down.aspx中在Page_Load中使用response.redirect("需下载的文件的真实地址")
如:
 protected void Page_Load(object sender, EventArgs e)
    {
            //进行一些业务处理如:下载数增1 ……
             Response.Redirect("需下载文件的真实地址“);
    }
二、这样做的功能:
1、可简单地隐藏下载文件的物理地址。
2、可实现有条件下载。
3、使用response.redirect()语句可使用一些下载工具进行下载。如果使用文件流的方式它能很好的隐藏下载文件的真实地址,但在下载时却不能使用下载工具下载。
三、应注意的问题:
1、down.aspx页面不能放在有管理规则的文件夹中,down.aspx页面的代码内也不能涉及到用户身份认证之类的代码。一旦涉及到管理规则及认证时,会出现使用下载工具下载时下载的内容是down.aspx而不是需下载的文件的情况,可能是在做重定向时下载工具不能提供身份验证的原因。
2、并不是所有的文件类型都能下载
如有这样一个文件aa.gsp需要下载,结果下载时出现HTTP400文件找不到的错误。
出现这个现象是由于windows2003内的IIS6.0取消了对某些MIME类型的支持。解决方法如下:IIS管理器/网站属性/HTTP头/MIME类型/新建/   扩展名框中输入不能下载的文件的扩展名,如.gsp MIME类型框中输入application
四、需要探讨的问题:
如果不符合下载条件的用户知道了真实的文件的地址,他就能避开下载条件而在浏览器地址栏中输入地址就能直接下载了。有没有比较好的方法让不符合下载条件的用户真正地无法下载?你可能说在IIS内使用应用程序扩展将下载文件的类型进行映射,一旦进行了映射,就只能使用文件流方式进行下载,使用response.redirect()就会出错,也就不能使用下载工具来进行下载了。
如何真正做到非法用户不能下载而合法用户能使用下载工具下载,并且在下载时能做一些身份验证之类的逻辑?希望大家对此进行讨论。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值