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