/// <summary>
/// 从服务器通过浏览器下载文件到本地
/// </summary>
/// <param name="ExcelItemFile"></param>
/// <param name="ExcelItemName"></param>
public void GetFile(string ExcelItemFile, string ExcelItemName)
{
//提供创建、复制、删除、移动和打开文件的属性和实例方法,并且帮助创建 System.IO.FileStream 对象
//1.先创建一个文本信息对象
FileInfo fi = new FileInfo(ExcelItemFile);//ExcelItemFile为文件在服务器上的地址
//2.创建一个封装了HTTP的响应信息
HttpResponse contextResponse = HttpContext.Current.Response;
//3.清空响应流中的内容
contextResponse.Clear();
//4.处理完整个响应后发送它
contextResponse.Buffer = true;
//5.设置响应流的相关信息
contextResponse.Charset = "GB2312"; //设置了类型为中文防止乱码的出现
contextResponse.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", ExcelItemName)); //定义输出文件和文件名
contextResponse.AppendHeader("Content-Length", fi.Length.ToString());
contextResponse.ContentEncoding = Encoding.Default;
contextResponse.ContentType = "application/ms-ExcelItem";//设置输出文件类型为ExcelItem文件。
//6.将指定文件的内容作为文件块直接写入 HTTP 响应输出流。
contextResponse.WriteFile(fi.FullName);
contextResponse.Flush();
contextResponse.End();
}
/// <summary>
/// 获取绝对地址
/// </summary>
/// <param name="strPath"></param>
/// <returns></returns>
public static string GetMapPath(string strPath)
{
//判断是否是http请求
if (HttpContext.Current != null)
{
// 返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径
return HttpContext.Current.Server.MapPath(strPath);
}
else //非web程序引用
{
strPath = strPath.Replace("/", "\\");
if (strPath.StartsWith("\\"))
{
strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\');
}
//==AppDomain.CurrentDomain.BaseDirectory 获取基目录
//==System.IO.Path.Combine(s1,s2) 把s1和s2组合成一个新的目录
return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
}
}
public void done()
{
GetFile( GetMapPath("ExcelItem.xlsx"), "ExcelItem.xlsx");
}
服务器通过浏览器下载文件到本地
最新推荐文章于 2023-11-14 17:11:53 发布