先列出代码,过段时间再写说明

protected void Page_Load(object sender, EventArgs e) { string file = Request["file"]; if (string.IsNullOrEmpty(file)) return; string filepath = Server.MapPath("~/Download/" + file); if (File.Exists(filepath)) //DownLoadStreamFile(filepath); ToOpen(filepath, ""); Response.End(); } /// <summary> /// 下载文件 /// </summary> /// <param name="serverfilpath"></param> /// <param name="filename"></param> public static void ToDownload(string serverfilpath, string filename) { FileStream fileStream = new FileStream(serverfilpath, FileMode.Open); long fileSize = fileStream.Length; HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + UTF_FileName(filename) + "\";"); attachment --- 作为附件下载 inline --- 在线打开 HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString()); byte[] fileBuffer = new byte[fileSize]; fileStream.Read(fileBuffer, 0, (int)fileSize); HttpContext.Current.Response.BinaryWrite(fileBuffer); fileStream.Close(); HttpContext.Current.Response.End(); } /// <summary> /// 打开文件 /// </summary> /// <param name="serverfilpath"></param> /// <param name="filename"></param> public static void ToOpen(string serverfilpath, string filename) { FileStream fileStream = new FileStream(serverfilpath, FileMode.Open); long fileSize = fileStream.Length; HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=\"" + UTF_FileName(filename) + "\";"); HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString()); byte[] fileBuffer = new byte[fileSize]; fileStream.Read(fileBuffer, 0, (int)fileSize); HttpContext.Current.Response.BinaryWrite(fileBuffer); fileStream.Close(); HttpContext.Current.Response.End(); } private static string UTF_FileName(string filename) { return HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8); } /// <summary> /// 下载文件数据流 /// </summary> /// <param name="serverfilpath"></param> public static void DownLoadStreamFile(string serverfilpath) { int blocksize = 1024 * 100; byte[] buffer = new byte[blocksize]; byte[] fileHeader = new byte[101]; int startindex = 0; int bytesread = 0; int bytesfinish = 0; int filesize = 0; string headerText = string.Empty; BinaryReader bReader = null; bReader = new BinaryReader(File.OpenRead(serverfilpath)); filesize = Convert.ToInt32(bReader.BaseStream.Length); while (bytesfinish < filesize) { if (bytesfinish + blocksize < filesize) bytesread = bReader.Read(buffer, startindex, blocksize); else bytesread = bReader.Read(buffer, startindex, filesize - bytesfinish); bytesfinish += bytesread; HttpContext.Current.Response.OutputStream.Write(buffer, 0, bytesread); } bReader.Close(); HttpContext.Current.Response.End(); }

转载于:https://www.cnblogs.com/jiang1984j/archive/2010/08/06/1986756.html

C#下载文件和将文件转换为数据流下载的示例相关推荐

  1. 要将OFD文件的base64编码转换为可下载的OFD文件

    要将OFD文件的base64编码转换为可下载的OFD文件,可以通过以下步骤: 将后台返回的OFD文件的base64编码解码成二进制数据. 创建一个Blob对象,并将二进制数据放入其中. const b ...

  2. 11.前台文件数据流下载获取源文件名

    1.文件流下载文件 axios实现: export function download(url, data){axios.post(baseurl+url,data,{responseType: 'b ...

  3. 前端将二进制数据流转为文件_前端通过二进制流下载文件

    JS下载文件两种方式总结: 下载文件主要分为两种形式,具体使用哪种方式取决于后台: 1.如果后台服务器的静态目录有可供下载的静态资源,后台接口返回文件路径,直接window.location.href ...

  4. SmartUpload上传下载及文件名和文件内容中文问题

    一.安装篇 jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中.该组件有以下几个特点: 1.使用 ...

  5. java 文件下载 jsp文件_jsp文件 Java实现文件上传与下载

    通过前台选择文件,然后将资源上传到(即新建一个文件)到发布的资源文件下面, 下载就是url 到发布的资源文件,触发即可自动下载.服务器已经封装了如何下载的底层实现.(此处用的是tomcat) JSP上 ...

  6. AzCopy – 上传/下载 Windows Azure Blob 文件

    在我们收到的请求中,有一个频繁出现的请求是提供一种能在 Windows Azure Blob 存储与其本地文件系统之间轻松上传或下载文件的方法.一年半前, 我们很高兴地发布了 AzCopy, Wind ...

  7. .pyc文件还原.py文件_Python文件.py转换为.exe可执行程序,制作.exe文件图标

    当大家想要将自己写的Python程序对别人进行展示的时候,你是否还是打开你的Pycharm进行运行展示? 假如是专业的人士看你的代码,一眼就能看懂你的代码,而其实我们可以不需要给代码,利用pyinst ...

  8. 通俗易懂【Springboot】 单文件下载和批量下载(多个文件合成一个压缩包下载)

    文章目录 一.单文件下载 1.简单理解文件下载 2.单文件下载的具体代码实现 3.测试 4.单文件下载整体代码 二.多文件批量下载(多个文件合成一个压缩包下载) 1.多文件下载的实现方式,这里使用了Z ...

  9. 【钉盘日记】通过调用api的方式定时下载钉盘的文件

    最近在整一个定时将钉钉云盘所有文件下载下来的服务,其中因为api只能拿到单独文件的关系,因此逻辑比较绕 经过设计后,进行代码的编写: 设计逻辑: 1.首先先从apollo拿到所需的appkey和APP ...

最新文章

  1. cssbefore图片大小_两小时学会CSS-before after 伪元素
  2. Java使用Future设置方法超时
  3. safari video一次性获取一个文件_Requests库(十四)一文揭秘如何获取快手关注的视频...
  4. Namespace declaration statement has to be the very first statement in the script
  5. 鸟哥linux php,鸟哥的 Linux 私房菜 -- 启动关机、在线求助与命令下达方式
  6. retinanet网络模型结构
  7. 椒盐噪声 Python实现
  8. linux命令:软件更新 sudo apt-get update 和 sudo apt-get upgrade
  9. electronjs设置宽度_electronjs 入门_2019年2月14日
  10. IOC容器特性注入第五篇:查找(Attribute)特性注入
  11. docker-compose 学习:通过 image 指令指定镜像搭建一个简单LNMP
  12. 7.SOA架构:服务和微服务分析及设计--- REST服务及微服务的服务API于契约设计
  13. kuangbin 简单搜索 A 棋盘问题
  14. wav格式转换成mp3,wav转mp3教程
  15. 学习计算机基础有什么推荐的书和视频?
  16. 如何写出健壮和优雅的代码?
  17. 色彩平衡校正色彩的原理
  18. 阿里云KMS创建应用接入点
  19. 股神问题 - 有股神吗? 有, 小赛就是!
  20. 北京大学计算机考博英语,2019年北京大学博士英语考题回忆

热门文章

  1. Qt_发送邮件(以qq邮箱为例)
  2. wpf 进度条两侧圆角_[原译]WPF绘制圆角多边形
  3. 方舟服务器在线人数查询软件,时隔4年,方舟生存进化稳居Steam在线人数前十,让他游戏都嫉妒?...
  4. Java编写优雅接口,看看别人后端API接口写得,那叫一个优雅!
  5. 启动之后自己关闭_如何关闭Mac开机总是要输入密码?
  6. python自定义变量名标识符,【python】3 标识符和关键字
  7. python 网页调试_使用Django 2.0构建Python Restful Web服务:七)在浏览器中浏览和调试restful接口...
  8. df 和 ll 等命令无响应处理
  9. 排序算法lowb三人组-插入排序
  10. js和php中几种生成验证码的方式