文件下载的几种方式-推荐下载

合集下载

标准下载网怎么下载

标准下载网怎么下载

标准下载网怎么下载下载是我们在日常生活中经常会遇到的一个操作,而在互联网时代,下载更是我们经常需要进行的一项活动。

而在网络上,有很多网站提供下载服务,其中标准下载网就是一个非常常见的下载网站。

那么,接下来就让我们来看一下,在标准下载网上,我们应该如何进行下载操作。

首先,我们需要打开浏览器,并输入标准下载网的网址。

在搜索引擎中输入“标准下载网”即可找到该网站的官方网址。

点击链接进入网站后,我们会看到网站的首页界面,通常会有一些热门推荐或者最新更新的软件、游戏、音乐、视频等资源的信息。

在这个页面上,我们可以根据自己的需求浏览和搜索想要下载的内容。

其次,当我们找到了想要下载的内容之后,我们需要点击该内容的链接进入详情页面。

在详情页面上,我们会看到该内容的介绍、大小、版本、下载量、评分等信息。

在这个页面上,通常会有一个“下载”或者“立即下载”的按钮,我们需要点击这个按钮来开始下载操作。

接着,当我们点击了下载按钮之后,会弹出一个提示框,询问我们是否要保存该文件。

我们需要选择“保存”选项,并选择我们想要保存的位置。

一般来说,我们可以选择保存在电脑的桌面或者下载文件夹中。

在选择好保存位置之后,点击“保存”按钮,下载操作就会开始进行。

最后,等待下载完成。

根据文件的大小和网络的速度不同,下载的时间会有所不同。

在下载过程中,我们需要耐心等待,直到下载完成。

当下载完成后,我们就可以在我们选择的保存位置找到我们刚才下载的文件了。

总的来说,使用标准下载网进行下载操作是非常简单和方便的。

只需要打开网站,搜索想要下载的内容,点击下载按钮,选择保存位置,等待下载完成,就可以轻松获取到我们需要的文件。

希望以上内容可以帮助到大家,让大家能够更加轻松地使用标准下载网进行下载操作。

用Jsp来实现文件下载功能的几种方式

用Jsp来实现文件下载功能的几种方式

1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。

这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。

这个就不写示例了。

2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。

(示例如下)
3.既然是JSP的话,还有一种方式就是用Applet来实现文件的下载。

不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。

servlet端示例
JApplet端示例
4.顺便把JApplet上传文件的代码也贴上来. JApplet端示例
servlet端代码示例
总结:在文件的传输中是流的形式存在的,在硬盘上是文件的形式存在的。

我们要做的只是通过HttpServletRequest和HttpServletResponse,或者是response和request来发送流和读取流。

以及把文件转换成流或把流转换成文件的操作。

详解Springboot下载Excel的三种方式

详解Springboot下载Excel的三种方式

详解Springboot下载Excel的三种⽅式汇总⼀下浏览器下载和代码本地下载实现的3种⽅式。

(其实⼀般都是在代码⽣成excel,然后上传到oss,然后传链接给前台,但是我好像没有实现过直接点击就能在浏览器下载的功能,所以这次⼀起汇总⼀下3种实现⽅式。

) 1.EasyExcel--浏览器下载1.Maven环境⽹络上有很多maven的easyexcel版本,还是推荐alibaba的easyexcel,操作简单,代码不冗余<!-- https:///artifact/com.alibaba/easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>2.完整代码实现控制层:设置response格式然后直接下载即可package com.empirefree.springboot.controller;import com.alibaba.excel.EasyExcel;import er;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;/*** @program: springboot* @description:* @author: huyuqiao* @create: 2021/07/04 15:01*/@RestControllerpublic class UserController {/*** Author: HuYuQiao* Description: 浏览器下载--excel*/@GetMapping("/testRespExcel")public void testRespExcel(HttpServletResponse response){response.addHeader("Content-Disposition", "attachment;filename=" + "huyuqiao.xlsx");response.setContentType("application/vnd.ms-excel;charset=gb2312");try {// 从HttpServletResponse中获取OutputStream输出流ServletOutputStream outputStream = response.getOutputStream();/** EasyExcel 有多个不同的read⽅法,适⽤于多种需求* 这⾥调⽤EasyExcel中通过OutputStream流⽅式输出Excel的write⽅法* 它会返回⼀个ExcelWriterBuilder类型的返回值* ExcelWriterBuilde中有⼀个doWrite⽅法,会输出数据到设置的Sheet中*/EasyExcel.write(outputStream, User.class).sheet("测试数据").doWrite(getAllUser());} catch (IOException e) {e.printStackTrace();}}public List<User> getAllUser(){List<User> userList = new ArrayList<>();for (int i=0;i<100;i++){User user = User.builder().name("胡宇乔"+ i).password("huyuqiao").age(i).build();userList.add(user);}return userList;}}实体类:给User设置对应的excel属性即可,value代表excel中名字,index代表第⼏列package com.empirefree.springboot.pojo;import com.alibaba.excel.annotation.ExcelProperty;import com.alibaba.excel.metadata.BaseRowModel;import lombok.Builder;import lombok.Data;/*** @program: springboot* @description: user* @author: huyuqiao* @create: 2021/07/04 14:53*/@Data@Builderpublic class User extends BaseRowModel{@ExcelProperty(value = "姓名",index = 0)private String name;@ExcelProperty(value = "密码",index = 1)private String password;@ExcelProperty(value = "年龄",index = 2)private Integer age;}3.实现效果2.EasyExcel--本地下载1.完整代码实现m aven和上⾯⼀样,只是⽂件输出流设置⼀下即可package com.empirefree.springboot.controller;import com.alibaba.excel.EasyExcel;import er;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;/*** @program: springboot* @description:* @author: huyuqiao* @create: 2021/07/04 15:01*/@RestControllerpublic class UserController {/*** Author: HuYuQiao* Description:本地⽣成--excel*/@GetMapping("/testLocalExcel")public void testLocalExcel(){// ⽂件输出位置OutputStream out = null;try {out = new FileOutputStream("C:\\Users\\EDY\\Desktop\\empirefree.xlsx"); EasyExcel.write(out, User.class).sheet("测试数据").doWrite(getAllUser()); } catch (FileNotFoundException e) {e.printStackTrace();}finally {try {// 关闭流out.close();} catch (IOException e) {e.printStackTrace();}}}public List<User> getAllUser(){List<User> userList = new ArrayList<>();for (int i=0;i<100;i++){User user = User.builder().name("张三"+ i).password("1234").age(i).build(); userList.add(user);}return userList;}}2.实现效果3.Poi--浏览器实现下载1.Maven环境<!-- excel导出⼯具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>RELEASE</version></dependency>2.代码实现控制层/*** Author: HuYuQiao* Description: excle-export*/@GetMapping("/export")public String exportExcel(HttpServletResponse response) {System.out.println("成功到达到处excel....");String fileName = "test.xls";if (fileName == null || "".equals(fileName)) {return "⽂件名不能为空!";} else {if (fileName.endsWith("xls")) {Boolean isOk = excelService.exportExcel(response, fileName, 1, 10);if (isOk) {return "导出成功!";} else {return "导出失败!";}}return "⽂件格式有误!";}}serviceimpl层/*** Author: HuYuQiao* Description: excel-impl*/@Overridepublic Boolean exportExcel(HttpServletResponse response, String fileName, Integer pageNum, Integer pageSize) { ("导出数据开始。

STM32程序3种下载方式说明

STM32程序3种下载方式说明

下面介绍U-Link、J-Link和ISP下载STM32程序的配置方法,以MDK3.24为例,也可以使用MDK3.80或者更高版本的MDK,过程类似。

此文档仅供学习和交流使用。

STM32程序U-Link下载说明(1)ULink下载工具如图1所示。

图1 ULink下载工具(2)双击MDK安装文件图标进行安装,在后续出现的窗口中依次点击Next按钮,直到安装完成(默认安装路径是C:\Keil,建议换个路径名,比如C:\Keil MDK324文件目录下,以防止与51单片机开发环境冲突)。

安装好后,未输入License的MDK,在开发时会有代码量的限制。

(3)输入License:选择File菜单下的License Management子菜单,如图2所示。

图2 File菜单下的License Management子菜单(4)将License序列号拷贝到License Management中的New License ID Code(LIC)中,点击ADD LIC完成,如图3所示。

图3 输入License序列号(5)运行序列号生成程序,打开破解补丁:(部分杀毒软件可能会将这个文件误报为病毒文件,这时不必理会杀毒软件的警告,并将这个文件设为信任文件或者直接关掉杀毒软件),运行压缩包中程序,按图4所示配置,将Target下拉选项选中“arm”。

图4 输入CID,获得序列号将Keil软件“License Management”对话框中的Computer CID中的内容:拷贝到此程序的CID中:,然后点击按钮,获得序列号。

(6)将生成的序列号拷贝到“License Management”对话框的LIC区域中:然后,点击“Add LIC”,出现图5所示的内容,点击“Close”关闭对话框。

图5 添加LIC序列号(7)将文件夹Bin目录中的3个文件“UL2ARM_RDI.dll”、“UL2ARM_ULINK1.dll”、“UL2CM3_ULINK1.dll”拷贝到MDK安装目录下的\ARM\Bin目录中。

网络资源下载方法经验集

网络资源下载方法经验集

{转载} 网络资源下载方法经验集作者: lyp 来源: 更新日期:2006-3-21 阅读次数:1056如今,在网上下载资源已经成为是否会用因特网的重要标志之一。

网上资源众多,不同种类的资源下载方法不尽相同。

精通各种下载方法,在面对自己需要的东西时才会临阵不乱,更不会眼睁睁让资源从眼皮下溜走。

本文集中归纳了资源下载攻略,希望对各位朋友有所帮助。

一、网页文字的下载方法网页文字的下载是最容易碰到的,不过它的下载方法相当简单。

1.复制、粘贴法当需要从网页中下载所需文字时,先用鼠标拖动将文字选中。

然后单击右键,选择“复制”(如果右键菜单被网页屏蔽,可单击编辑菜单中的“复制”项),随后打开记事本或Microsoft Word,执行编辑菜单下的“粘贴”命令,这样就将所选文字复制到文本处理工具中,之后可以进行编辑、保存。

提示:如果仅仅是需要文字而不保存文字的格式等信息,建议用记事本,或者在Word中执行“编辑”菜单下的“选择性粘贴”并在对话框中选择“无格式文本”形式,这样可避免将无用的文字修饰信息也保存;如果需要格式或保存内容中有表格等,则建议直接在Word中粘贴——在记事本中将不能保存表格信息。

2.用软件快速保存如果不想用复制、粘贴来进行,则可以用“网页复制大师”等软件来完成,此软件在后台运行,当选中需要的文字后,按下CTRL+C可将所选内容复制且保存到在软件中所设置的文本文件中去。

不用每次都设置要保存的文件,因为用此软件来保存文字内容时,它会自动将每次复制的文字放在同一文本文件中,且放在上次复制的内容后面。

提示:当“网页复制大师”运行且起作用时,每次执行复制操作后会自动清除剪贴板中的内容。

当然,使用“一拖即存”这种软件更方便,那就是直接将选中的文字拖动到软件的一个收集窗口中(类似网络蚂蚁之类的拖放篮)放开即可。

如果你使用的是MyIE2这种浏览器,则它自带了一个简易收集面板(在工具菜单下),只要将文字选中并拖动到该面板窗口中,然后单击保存按钮即可。

通信工程师:TD通用维护知识(题库版)

通信工程师:TD通用维护知识(题库版)

通信工程师:TD通用维护知识(题库版)1、填空题在WCDMA的MOS测试中推荐的手机型号为()或()正确答案:6630或66802、多选FTP下载分哪几种方式下载()A.PS64/64B.PS64/128C.(江南博哥)PS64/384D.PS64/484正确答案:A, B, C3、判断题在配置手机时,不推荐自动搜索手机功能正确答案:对4、单选TD系统PS域指的是()A.电路域B.数据域正确答案:B5、问答题现场测试中接通率公式,指标信令如何定义,取主叫还是被叫数值?正确答案:接通率,定义:接通率=接通总次数/试呼总次数×100%;说明:试呼次数:以channelrequest和CMservicerequest同时出现来确定试呼开始;接通次数:当一次试呼开始后出现了Connect,ConnectAcknowledge消息中的任何一条就计数为一次接通;接通率取主叫测试手机的统计结果。

6、多选TI8.x可进行的数据业务测试有哪些:()A.FTPB.MMSC.WAPD.PingE.HTTPF.Email正确答案:A, B, C, D, E, F7、单选TEMS Investigation是Ericsson公司的一套用于()A.室内外无线空中接口测试的系统B.自动路测系统C.网管系统D.网络规划系统正确答案:A8、问答题如果看到fail to open6230 COM端口消息,有那几步解决方案?正确答案:在windows控制面板/设备管理器/中检查6230状态(正常状态如前述)检查6230Trace端口号码是否设置正确(正常状态如前述)检查VQ连接线连接是否正确、可靠(连接方式如前所述)断开/连接VQ电源线重新激活设备9、单选语音业务城市DT测试包含如下指标:()A、覆盖率,接通率,掉话率,话音质量,MOS,测试点达标率B、覆盖率,接通率,掉话率,话音质量,MOSC、覆盖率,里程掉话比,话音质量,MOSD、覆盖率,掉话率,MOS,接通率正确答案:B10、填空题对物理信道数据部分的扩频包括两步操作:一是(),增加信号的带宽;二是()。

前端调用后端接口下载excel文件的几种方式

前端调⽤后端接⼝下载excel⽂件的⼏种⽅式 今天有⼀个导出相应数据为excel表的需求。

后端的接⼝返回⼀个数据流,⼀开始我⽤axios(ajax类库)调⽤接⼝,返回成功状态200,但是!但是浏览器没有⾃动下载excel表,当时觉得可能是ajax的安全性问题导致⽆法下载。

下⾯列觉两种我测试成功的⽅式: 1.window.location.href = '接⼝地址' 含义:当前页⾯打开URL页⾯. 和在浏览器输⼊接⼝地址⼀样,可以下载excel⽂件.但是缺点是⽆法执⾏POST请求 2.利⽤隐藏表单解决(我这⾥假设加⼊了JQuery库):var exportData = [{'list1':'xiaodo1'},{'list2':'xiaodo2'}] //模拟后台需要接收的参数let form = $("<form>"); //创建form标签form.attr("style","display:none");from.attr("method","post");//设置请求⽅式form.attr("action","接⼝地址"); //action属性设置请求路径$("body").append(form); //页⾯添加form标签let input1 = $("<input>") //创建input标签input1.attr("type","hidden") //设置隐藏域input1.attr("name","data") //设置发送后台数据的参数名input1.attr("value",JSON.Stringify(exportData));form.submit();//表单提交即可下载!上⾯就是我测试成功的两种⽅法.后⾯我去百度了⼀下axios如何导出excel⽂件,发现也是可以的.谢谢!。

[VIP专享]文件下载的几种方式

先把有问题的代码贴出来吧,using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;namespace Disk{public partial class downLoad :mon.WebStruct.BaseForm{/// <summary>/// 取得要下载文件的路径/// </summary>private string fileRpath{get{return Request["fileRpath"] == null ? "" : Request["fileRpath"]; }}/// <summary>/// 取得要下载文件的名称/// </summary>protected void Page_Load(object sender, EventArgs e){if (!IsPostBack)this.DownloadFile();}public void DownloadFile(){Response.ClearHeaders();Response.Clear();Response.Expires = 0;Response.Buffer =true;Response.AddHeader("Accept-Language", "zh-tw");string name = System.IO.Path.GetFileName(fileRpath);System.IO.FileStream files = new FileStream(fileRpath, FileMode.Open, FileAccess.Read, FileShare.Read);byte[] byteFile=null;if (files.Length == 0){byteFile=new byte[1];}else{byteFile = new byte[files.Length];}files.Read(byteFile, 0, (int)byteFile.Length);files.Close();Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(name,System.Text.Encoding.UTF8));Response.ContentType = "application/octet-stream;charset=gbk"; Response.BinaryWrite(byteFile);Response.End();}}}之前一直用这种下载方式,可是有一次用户上传了一个700Mb的文件时报内存溢出的问题,分析了一下原因,用户的内存只有256M,而下载文件时要创建内存流,导致了内存溢出。

FPGA几种下载方式

AS PS JTAG 配置方式的区别AS模式: 烧到FPGA的配置芯片里保存的,FPGA器件每次上电时,作为控制器从配置器件EPCS 主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程;PS模式:EPCS作为控制器件,把FPGA当做存储器,把数据写人到FPGA中,实现对FPGA的编程。

该模式可以实现对FPGA在线可编程;JTAG:直接烧到FPGA里面的,由于是SRAM,断电后要重烧;.pof文件可以通过AS方式下载(保证byteblasterII/usb blaster连接正确);.sof文件或者转换的.jic可以通过JTAG方式下载。

1.FPGA器件有三类配置下载方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式。

AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EPCS4配置器件专供AS模式,目前只支持 Cyclone系列。

使用Altera串行配置器件来完成。

Cyclone期间处于主动地位,配置期间处于从属地位。

配置数据通过DATA0引脚送入 FPGA。

配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。

PS则由外部计算机或控制器控制配置过程。

通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,在PS配置期间,配置数据从外部储存部件,通过DATA0引脚送入FPGA。

配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。

JTAG接口是一个业界标准,主要用于芯片测试等功能,使用IEEE Std 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。

FPGA在正常工作时,它的配置数据存储在SRAM中,加电时须重新下载。

在实验系统中,通常用计算机或控制器进行调试,因此可以使用PS。

在实用系统中,多数情况下必须由FPGA 主动引导配置操作过程,这时FPGA将主动从外围专用存储芯片中获得配置数据,而此芯片中fpga配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。

各类多媒体素材的常用获取方1

各类多媒体素材的常用获取方式一、文本素材的常用获取方式多媒体素材中文本素材是最基本的素材,且文本素材的开发又是资源开发的基础,因为各类资源的开发或多或少都要用到文本。

在多媒体课件中它主要用于对知识的描述性表示,如阐述概念、定义、原理和问题以及呈现标题、按钮名称、菜单名称等内容。

文本素材的采集与制作方法多种多样,如直接输入文本、扫描输入、语音输入等。

用户可根据自己的需求和具体情况,选择其中较合适的一种或几种方法得到文本素材。

1、文本素材的分类多媒体素材中的文本实际上有两种:一种是普通文本;另一种是图形文本,图形文本是相对于应用程序运行时,用户所看到的文本内容而言的,从严格意义上讲,这种类型的文件实际上应该属于图文件类,通常称之为图形文本。

它们的区别是:1)产生文本的软件类型不同。

普通文本多使用文字处理软件(例如:记事本、Word等),通过录入、编辑排版后而生成;而图形文字多使用图形图像处理软件(例如:Windows画笔、Photoshop等)来生成。

2)文件的格式不同。

普通文本为文本文件格式,例如:TXT、DOC、WPS等,除包含所输入的文字以外,还包含排版信息;而图形文字为图文件格式,例如:BMP、JPEG等。

最终是哪种类型取决于制作者所使用的软件和所选择的存盘格式。

图像格式所占的字节数一般要大于文本格式。

3)数据量不同。

通常,若文本内容相同,则普通文本的数据量相对较小,图形文本数据量相对较大。

但图形文本有自己的优点,可以对其进行透明效果、立体效果等特殊效果的处理,从而制作成图文并茂的美术字,以提高多媒体作品艺术性、表现力和的感染力。

2 文字的属性文字的属性一般具有以下几项:1)字的格式(Style)。

字体的格式有下列几种:普通、粗体、斜体、底线、和阴影等。

2)字的定位(Align)。

字的定位主要有四种:左对齐、居中、右对齐和两端对齐。

3)字体(Font)的选择。

由于Windows安装的字库不同,字体选项会有些差别,常用的有宋体、楷体、黑体、隶书、仿宋等等,还可通过可安装字库扩充更多的字体比如:方正舒体、方正姚体、华文宋体、华文隶书等等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

先把有问题的代码贴出来吧,using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;namespace Disk{public partial class downLoad :mon.WebStruct.BaseForm{/// <summary>/// 取得要下载文件的路径/// </summary>private string fileRpath{get{return Request["fileRpath"] == null ? "" : Request["fileRpath"]; }}/// <summary>/// 取得要下载文件的名称/// </summary>protected void Page_Load(object sender, EventArgs e){if (!IsPostBack)this.DownloadFile();}public void DownloadFile(){Response.ClearHeaders();Response.Clear();Response.Expires = 0;Response.Buffer =true;Response.AddHeader("Accept-Language", "zh-tw");string name = System.IO.Path.GetFileName(fileRpath);System.IO.FileStream files = new FileStream(fileRpath, FileMode.Open, FileAccess.Read, FileShare.Read);byte[] byteFile=null;if (files.Length == 0){byteFile=new byte[1];}else{byteFile = new byte[files.Length];}files.Read(byteFile, 0, (int)byteFile.Length);files.Close();Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(name,System.Text.Encoding.UTF8));Response.ContentType = "application/octet-stream;charset=gbk"; Response.BinaryWrite(byteFile);Response.End();}}}之前一直用这种下载方式,可是有一次用户上传了一个700Mb的文件时报内存溢出的问题,分析了一下原因,用户的内存只有256M,而下载文件时要创建内存流,导致了内存溢出。

解决方案:1>WriteFile分块下载,就是每次下载指定数量的多件;2>通过超链接的方式;lblDownLoad.Text = "<a href='" + drv["VPath"].ToString() + "'>下载</a>"下面是四种实现文件下载的方式:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}//TransmitFile实现下载protected void Button1_Click(object sender, EventArgs e){/*微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。

代码如下:*/Response.ContentType = "application/x-zip-compressed";Response.AddHeader("Content-Disposition","attachment;filename=z.zip");string filename = Server.MapPath("DownLoad/z.zip");Response.TransmitFile(filename);}//WriteFile实现下载protected void Button2_Click(object sender, EventArgs e){/*using System.IO;*/string fileName ="asd.txt";//客户端保存的文件名string filePath=Server.MapPath("DownLoad/aaa.txt");//路径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.WriteFile(fileInfo.FullName);Response.Flush();Response.End();}//WriteFile分块下载protected void Button3_Click(object sender, EventArgs e){string fileName = "aaa.txt";//客户端保存的文件名string filePath = Server.MapPath("DownLoad/aaa.txt");//路径System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);if (fileInfo.Exists == true){const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力byte[] buffer = new byte[ChunkSize];Response.Clear();System.IO.FileStream iStream = System.IO.File.OpenRead(filePath); long dataLengthToRead = iStream.Length;//获取下载的文件总大小Response.ContentType = "application/octet-stream";Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));while (dataLengthToRead > 0 && Response.IsClientConnected){int lengthRead = iStream.Read(buffer, 0,Convert.ToInt32(ChunkSize));//读取的大小Response.OutputStream.Write(buffer, 0, lengthRead);Response.Flush();dataLengthToRead = dataLengthToRead - lengthRead;}Response.Close();}}//流方式下载protected void Button4_Click(object sender, EventArgs e){string fileName = "aaa.txt";//客户端保存的文件名string filePath = Server.MapPath("DownLoad/aaa.txt");//路径//以字符流的形式下载文件FileStream fs = new FileStream(filePath, FileMode.Open);byte[] bytes = new byte[(int)fs.Length];fs.Read(bytes, 0, bytes.Length);fs.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();}}。

相关文档
最新文档