博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET C# 文件下载
阅读量:5080 次
发布时间:2019-06-12

本文共 4043 字,大约阅读时间需要 13 分钟。

1.文件下载到客户端

//WriteFile实现下载

protected void Download_Click(object sender, EventArgs e)

{
  string fileName = "20151223Test.doc";//客户端保存的文件名
  //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  string filePath = Server.MapPath(@"files\test.doc");//路径

  FileInfo fileInfo = new FileInfo(filePath);

  Response.Clear();
  Response.ClearContent();
  Response.ClearHeaders();
  Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
  Response.AddHeader("Content-Length", fileInfo.Length.ToString());
  Response.AddHeader("Content-Transfer-Encoding", "binary");
  Response.ContentType = "application/octet-stream";
  //Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  Response.ContentEncoding = System.Text.Encoding.UTF8;
  Response.WriteFile(fileInfo.FullName);
  Response.Flush();
  Response.End();
}

//TransmitFile实现下载

protected void DownLoadTF_Click(object sender, EventArgs e)
{

  Response.ContentType = "application/x-zip-compressed";

  Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
  string filename = Server.MapPath(@"files\DownloadsText.zip");
  Response.TransmitFile(filename);
  //Response.TransmitFile 需要 :Microsoft .NET Framework 1.1 Service Pack 1 支持!!
}

 

//流方式下载

protected void DownLoadFL_Click(object sender, EventArgs e)
{
  string fileName = "20151223aaa.doc";//客户端保存的文件名
  //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  string filePath = Server.MapPath(@"files\租户装修手册-印象城.doc");//路径

  //以字符流的形式下载文件

  using (FileStream fs = new FileStream(filePath, FileMode.Open))
  {
    byte[] bytes = new byte[(int)fs.Length];
    fs.Read(bytes, 0, bytes.Length);

    Response.ContentType = "application/octet-stream";

    //通知浏览器下载文件而不是打开
    Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();
  }
}

 

//流方式下载 2

protected void DownLoadFL2_Click(object sender, EventArgs e)
{
  string fileName = "20151223aaa.doc";//客户端保存的文件名
  //string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  string filePath = Server.MapPath(@"files\租户装修手册-印象城.doc");//路径

  //以字符流的形式下载文件

  using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
  {
    byte[] bytes = new byte[(int)fs.Length];
    using (BinaryWriter bw = new BinaryWriter(fs))
    {
      bw.Write(bytes);
      bw.Close();
      Response.ContentType = "application/octet-stream";
      //通知浏览器下载文件而不是打开
      Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
      Response.BinaryWrite(bytes);
      Response.Flush();
      Response.End();
    }
  }
}

 //http请求常用下载方式;

//通过webClient方式

WebClient client = new WebClient();

string url="http://down6.3987.com:801/2010/office_3987.com.zip";
Stream strm = client.OpenRead("http://down6.3987.com:801/2010/office_3987.com.zip");
string filename=url.Substring(url.LastIndexOf('/')+1);
int count = 0;
byte[] buffer = new byte[4096];
FileStream fs = new FileStream(Application.StartupPath+"//"+filename, FileMode.Create);
while ((count = strm.Read(buffer, 0, buffer.Length)) > 0) {

fs.Write(buffer, 0, count);

}

fs.Close();
strm.Close();
strm.Dispose();
fs.Dispose();

 

//通过原生态HttpWebrequest方式

string url = "http://down6.3987.com:801/2010/office_3987.com.zip";

string filename = url.Substring(url.LastIndexOf('/') + 1);

//用webClient方式创建http请求
HttpWebRequest req =(HttpWebRequest)HttpWebRequest.Create(url) ; //创建链接

//获取服务其数据

HttpWebResponse res = (HttpWebResponse)req.GetResponse();

Stream mystream = res.GetResponseStream();

//开始文件操作

FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory+"//"+filename, FileMode.Create, FileAccess.Write, FileShare.None);

byte[] buffer=new byte[1024];

int count=0;
while((count=mystream.Read(buffer,0,1024))>0)
{
fs.Write(buffer, 0, count);
}

fs.Close();

mystream.Close();
fs.Dispose();

 

参考:

转载于:https://www.cnblogs.com/wangfuyou/p/5069054.html

你可能感兴趣的文章
Js 小技巧
查看>>
Mono for Android 学习一 环境的搭建
查看>>
正则表达式工具RegexBuddy使用教程(原创自Zjmainstay)
查看>>
Spring @Async 应用于出现循环依赖的 Bean 报错的解决方案
查看>>
JS 事件介绍
查看>>
flex弹性布局操练2
查看>>
【vijos P1034】家族(并查集)
查看>>
java类中元素初始化顺序详解
查看>>
LeetCode - 121. Best time to buy and sell stock
查看>>
JUnit单元测试教程(翻译自Java Code Geeks)
查看>>
Nginx 安装 (mac os) 错误 ld: symbol(s) not found for architecture x86_64
查看>>
leetcode[166]Fraction to Recurring Decimal
查看>>
Vue 路由系统和钩子函数
查看>>
HTTP请求
查看>>
Android Protobuf应用及原理
查看>>
Intellij IDEA 配置Tomcat远程调试
查看>>
android学习笔记1
查看>>
C语言中的负数是如何表示的?
查看>>
SpringMVC+Maven+tomcat配置----2.tomcat的配置
查看>>
导数和微积分(蒯)
查看>>