首页 > 编程语言 >C# 下载文件的几种方法

C# 下载文件的几种方法

时间:2022-12-30 16:14:54浏览次数:33  
标签:输出 HTTP C# bytes 几种 buffer Length Response 下载

1. 使用WebRequest类下载,代码如下:

WebRequest request = WebRequest.Create("http://www.walnr.com/File/Base64ToFile.exe");
WebResponse response = request.GetResponse();
if (response.ContentType.ToLower().Length > 0)
{
    using (Stream reader = response.GetResponseStream())
    {
        using (FileStream writer = new FileStream(@"D:\Base64ToFile.exe", FileMode.OpenOrCreate, FileAccess.Write))
        {
            byte[] buffer = new byte[1024];
            int c = 0;
            while ((c = reader.Read(buffer, 0, buffer.Length)) > 0)
            {
                writer.Write(buffer, 0, c);
            }
        }
    }
}

2.采用HttpResponse类下载代码如下:

HttpResponse Response = HttpContext.Current.Response;
#region    读取流程
byte[] bytes = Convert.FromBase64String("");
#endregion
// 清除缓存区流中的所有内容输出
Response.Clear();
// 设置缓冲输出为true,后台编辑的文件写到内存流中了
Response.Buffer = true;
// 设置编码格式 ContentEncoding是管字节流到文本的,而Charset是管在浏览器中显示的
//Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.Charset = "UTF-8";
// 将HTTP头添加到输出流,指定默认名
Response.AddHeader("Content-Disposition", string.Format(@"attachment;filename=""{0}""", HttpUtility.UrlEncode("文件.et")));
Response.ContentEncoding = System.Text.Encoding.UTF8;
// 设置输出流的HTTP MIME类型为application/vnd.ms-excel 
//ContentType类型的地址:        https://www.cnblogs.com/zzr-stdio/p/10692497.html
Response.ContentType = "application/vnd.ms-excel";

Response.AddHeader("Content-Length", bytes.Length.ToString());
// 将指定的文件写入HTTP内容输出流
Response.OutputStream.Write(bytes, 0, bytes.Length);
//防止文件名含中文出现乱码而进行编码
// Response.BinaryWrite(bytes);
// 向客户端发送当前所有缓冲的输出
Response.Flush();
// 将当前所有缓冲的输出关闭
Response.Close();

 

标签:输出,HTTP,C#,bytes,几种,buffer,Length,Response,下载
From: https://www.cnblogs.com/lgx5/p/17015127.html

相关文章

  • typescript循环依赖error
    //a.tsimport{b}from"./b"exportconsta=[b]//b.tsimport{a}from"./a"exportconstb=[a]或//a.tsimport{b1}from"./b"exportconst......
  • Tomcat WEB服务器日志切割
    cronolog简介cronolog是一个简单的过滤程序,读取日志文件条目从标准输入和输出的每个条目并写入指定的日志文件的文件名模板和当前的日期和时间。当扩展文件名的变化,目前的......
  • Tomcat 8.x基于Redis Session会话保持
    什么是Redis?Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。一、与其他用户状态保存方案比较一般开......
  • 基于LNMP架构部署NextCloud私有云盘
    一、NextCloud介绍1、简介Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本......
  • SpringBoot - 定时任务 @EnableScheduling,@Scheduled
    1.在启动类上添加@EnableScheduling注解,开启对定时任务的支持//开启对定时任务的支持@EnableScheduling@SpringBootApplicationpublicclassLearn20221218Applicatio......
  • VSCode添加到右键菜单命令
    一、打开注册表win+R输入regedit,打开注册表编辑器二、文件添加右键VScode打开命令依次找到HKEY_CLASSES_ROOT>*>shell,右键新建,项,命名为VSCode,点击VScode文件夹,双击......
  • 流式细胞仪生物信息学CRO丨Cytapex功能简介
    Cytapex的自动化解决方案可以根据客户的细胞分析需求量身定制,速度快(60秒),并提供可靠、可重复的结果。  解决方案01、质量检查使用Cytapex的自......
  • Kafka Reblance & max.poll.interval.ms 重复消费问题
    1.什么是kafkaReblance    消费组是MQ中一个非常重要的概念,一个消费组监听一个Topic时,Kafka服务端会给消费组中的每一个实例,进行队列分配,每一个实例指定消费一个或......
  • anki vector源码浅试
    官方源码地址:https://github.com/digital-dream-labs/vector下载源码:gitclone https://github.com/digital-dream-labs/vector.git目录说明:drwxr-xr-x9rootroot......
  • html css js复习
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content=......