问题描述: 现在在我的库里存储了 一个网络上一个绝对地址:
    如:http://test.test.com/reports/2010-8-18_73724a26-cf92-49c5-b25c-53a792d29231.pdf    隐藏真实的下载地址,实现安全下载功能!  
    像 CSDN 的下载功能那样: http://d.download.csdn.net/down/2795717/niuxuexin 求解决方案~~~~~~~~~~!!!!!

解决方案 »

  1.   

    Response.WriteFile("../Files/yourfname");
      

  2.   

     public static void DownloadXLSFile(FileInfo file, Control ctr, string fileName)
            {
                var response = ctr.Page.Response;            response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", fileName));
                response.Charset = "UTF-8";
                 response.ContentType = "application/octet-stream";            var stream = new System.IO.FileStream(file.FullName, FileMode.Open, FileAccess.Read);
                try
                {
                    while (true)
                    {
                        byte[] buffer = new byte[1024];
                        int leng = stream.Read(buffer, 0, 1024);
                        if (leng == 0)
                            break;
                        if (leng == 1024)
                        {
                            response.BinaryWrite(buffer);
                        }
                        else
                        {
                            byte[] b = new byte[leng];
                            for (int i = 0; i < leng; i++)
                            {
                                b[i] = buffer[i];
                            }
                            response.BinaryWrite(b);
                        }
                    }
                }
                finally
                {
                    stream.Close();
                }        }
      

  3.   


    /// <summary>
            /// 以指定的ContentType输出指定文件文件
            /// </summary>
            public static void ResponseFile(string filepath, string filename, string filetype)
            {
                Stream iStream = null;            // 缓冲区为10k
                byte[] buffer = new Byte[10000];
                // 文件长度
                int length;
                // 需要读的数据长度
                long dataToRead;            try
                {
                    // 打开文件
                    iStream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);                // 需要读的数据长度
                    dataToRead = iStream.Length;                HttpContext.Current.Response.ContentType = filetype;
                    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + Utils.UrlEncode(filename.Trim()));                while (dataToRead > 0)
                    {
                        // 检查客户端是否还处于连接状态
                        if (HttpContext.Current.Response.IsClientConnected)
                        {
                            length = iStream.Read(buffer, 0, 10000);
                            HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);
                            HttpContext.Current.Response.Flush();
                            buffer = new Byte[10000];
                            dataToRead = dataToRead - length;
                        }
                        else
                        {
                            // 如果不再连接则跳出死循环
                            dataToRead = -1;
                        }
                    }
                }
                catch (Exception ex)
                {
                    HttpContext.Current.Response.Write("Error : " + ex.Message);
                }
                finally
                {
                    if (iStream != null)
                    {
                        // 关闭文件
                        iStream.Close();
                    }
                }
                HttpContext.Current.Response.End();
            }