如题,即用户即使知道了文件的url地址也不能下载.

解决方案 »

  1.   

    比如某个文件是xxx.rar,放在网站xxxWeb目录filestore下,用户正常是可以通过以下url地址下载的:http://xxxWeb/filestore/xxx.rar如果禁止?
      

  2.   

    使用 一个文件 如filedown.aspx
    读取 输出你的文件
    客户端如果知道了真实地址是肯定可以下载的 除非IIS中不允许输出你的文件类型.
    //---可以使用下面的函数加载你的文件并输出
     private void FileDownload(string DownPath)
        {
            String FullFileName = Server.MapPath(DownPath);
            FileInfo DownloadFile = new FileInfo(FullFileName);
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = false;
            Response.ContentType = "application/octet-stream";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
            Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
            Response.WriteFile(DownloadFile.FullName);
            Response.Flush();
            Response.End();
        }
      

  3.   

    给本地下载加附加串,比如,从本地转过来,在HIDDEN中设置值,连接串里看不到,他挂走,你收到请求,也验证不到该参数,没有就不让下
      

  4.   

    校验上一页面的地址的方法好像不适用吧,用户直接在地址栏中敲入http://xxxWeb/filestore/xxx.rar就下载了,怎么校验?
      

  5.   

    使用HttpHandle,这是.NET中最好的方法。
      

  6.   

    通过UrlReferrer检测上一个页面是不是下载页面,是下载 ,不是跳转到下载页面
      

  7.   

    sunjay117() ( ) 信誉:100    Blog  2007-03-27 17:40:54  得分: 0  
     
     
       通过UrlReferrer检测上一个页面是不是下载页面,是下载 ,不是跳转到下载页面
      
     
    ----------------------------------------------------------
     birdfootless() ( ) 信誉:100    Blog  2007-03-27 16:44:00  得分: 0  
     
     
       校验上一页面的地址的方法好像不适用吧,用户直接在地址栏中敲入http://xxxWeb/filestore/xxx.rar就下载了,怎么校验?
      
     
      

  8.   

    hertcloud(·£孙子兵法£·) ( ) 信誉:100    Blog 的说法就可以解决,不过就是慢了些我都是用BFILE存文件,读出来后输出到PAGE,不过只限于小文件
      

  9.   

    1 check urlreferrer
    2. set session["a"] = 1    check session["a"] in filedownload.aspx
      

  10.   

    这个问题我也关注不过BS一下那些说什么用个页面判断的人
    看清楚别人的意思在发言,别人说的是直接敲入地址,而非通过叶面下载不过我想你是不是能够借鉴一下Q-ZONE的做法,外部引用他的图片都是给的另外一个图片来代替的
      

  11.   

    1、把那个文件放到非 WEB 的目录下。然后用程序读取那个文件,再输出。2:把所有请求映射到 asp.net isapi,然后用HttpHandle、HttpModel做判断,不过会影响一点性能。
      

  12.   

    1、把那个文件放到非 WEB 的目录下。然后用程序读取那个文件,再输出
    这个是正确的
      

  13.   

    sunjay117() ( ) 信誉:100    Blog  2007-03-27 17:40:54  得分: 0  
     
     
       通过UrlReferrer检测上一个页面是不是下载页面,是下载 ,不是跳转到下载页面
      
     
    ----------------------------------------------------------
     birdfootless() ( ) 信誉:100    Blog  2007-03-27 16:44:00  得分: 0  
     
     
       校验上一页面的地址的方法好像不适用吧,用户直接在地址栏中敲入http://xxxWeb/filestore/xxx.rar就下载了,怎么校验?
    你可以做一个页面读出文件来然后输出下载
      

  14.   

    UrlReferrer显然是不合适的,说出来的人不动脑子
      

  15.   

    zzmsl(周先生) 说的可行,不过就是麻烦。