一般都是用户验证登陆后才能下载文件,但是当用户通过了验证,如果他把下载文件的链接地址透露出去,那么其他人就可以直接复制路径下载了。   
  请问如何做到不让未登陆用户直接COPY路径就下载文件?

解决方案 »

  1.   

    以前做过,自己感觉方法不是很好的:
    思路如下:不能直接连接要下载的文件,使用文件流的方式直接输出到一个aspx页面,并且连接地址中需要加入一个验证的条件(可以是sessionid);在输入具体的内容之前,先验证。继续关注中...
      

  2.   

    我查了资料,跟你说的方法大同小异,我自己也设置了Session,但是还是没出来效果,还有一种方法,我也是听别人说的,把下载路径导入到App_Data文件中,通过一个下载页面直接传递id,这样路径就看不到了,不过这也只是理论,实际操作我还是做不成,不知道有没有人这样做过,最好有个实例.如果有机会把你的处理过程发过来看看,谢谢
      

  3.   

    通过HTTP来下载就可以了当用户要下载的时候,你读出文件的内容,然后设置网页类型为 file类型,然后把读出的二进制数据,直接输出到页面
      

  4.   

    你做成拒绝匿名登陆 建议你看看WebConfig
      

  5.   

    可以单独写一个页面在protected override void Page_Load(object sender, EventArgs e)
    {
       if(checkSession())
       {
         Response.WriteLine("url")
       }
    }private bool CheckSession()
    {
       return Session["userId"] != null;
    }
      

  6.   


    <httpModules>
                <add name="HandleFile" type="F.HandleFile,HandleFile"/>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>HandleFile 就是你要处理的类. 通过这个类, 判断访问路径, 权限等. 
      

  7.   

    怎么用HandleFile判断访问路径啊,我的路径都在WEB.CONFIG定义好的,有没有实例可以参考一下
      

  8.   

    下载文件,当点击下载时,执行下面代码。
                  
                         if(IsLoginSucess)
                        {
                            this.Response.Clear();
    this.Response.ContentType = "application/octet-stream";
    this.Response.AddHeader("Content-Disposition", "attachment;filename=" + "文件名称");
    this.Response.Flush();
    this.Response.WriteFile("文件路径", false); //-- 下载文件
    this.Response.End();
                         }
                         
      

  9.   

    下载文件 Response.WriteFile("文件路径", false);
      

  10.   

    16楼的方法很管用,我作了部分修改this.Response.WriteFile("文件路径+文件名称", false);不管怎样问题已经解决了,谢谢