您正在使用 IPV4 [44.192.48.196] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会       悟空收录网      

【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价      
[公益] 地球是我家,绿化靠大家      
2024年 七夕节 052
2025年 高 考 353
2025年 元 旦 196
2025年 春 节 224
 
您现在的位置:首页 >> ASP/ASP.net >> 内容
本类新增
本类热门
ASP.NET中下载文件的几种实例代码
内容摘要: //TransmitFile实现下载protectedvoidButton1_Click(objectsender,EventArgse){/*微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。代码如下:*......
//TransmitFile实现下载

protectedvoidButton1_Click(objectsender,EventArgse)

{

/*

微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite

下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。

代码如下:

*/

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

Response.AddHeader("Content-Disposition","attachment;filename=z.zip");

stringfilename=Server.MapPath("DownLoad/z.zip");

Response.TransmitFile(filename);

}

//WriteFile实现下载

protectedvoidButton2_Click(objectsender,EventArgse)

{

/*

usingSystem.IO;

*/

stringfileName="asd.txt";//客户端保存的文件名

stringfilePath=Server.MapPath("DownLoad/aaa.txt");//路径

FileInfofileInfo=newFileInfo(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分块下载

protectedvoidButton3_Click(objectsender,EventArgse)

{

stringfileName="aaa.txt";//客户端保存的文件名

stringfilePath=Server.MapPath("DownLoad/aaa.txt");//路径

System.IO.FileInfofileInfo=newSystem.IO.FileInfo(filePath);

if(fileInfo.Exists==true)

{

constlongChunkSize=102400;//100K每次读取文件,只读取100K,这样可以缓解服务器的压力

byte[]buffer=newbyte[ChunkSize];

Response.Clear();

System.IO.FileStreamiStream=System.IO.File.OpenRead(filePath);

longdataLengthToRead=iStream.Length;//获取下载的文件总大小

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

Response.AddHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(fileName));

while(dataLengthToRead>0&&Response.IsClientConnected)

{

intlengthRead=iStream.Read(buffer,0,Convert.ToInt32(ChunkSize));//读取的大小

Response.OutputStream.Write(buffer,0,lengthRead);

Response.Flush();

dataLengthToRead=dataLengthToRead-lengthRead;

}

Response.Close();

}

}

//流方式下载

protectedvoidButton4_Click(objectsender,EventArgse)

{

stringfileName="aaa.txt";//客户端保存的文件名

stringfilePath=Server.MapPath("DownLoad/aaa.txt");//路径

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

FileStreamfs=newFileStream(filePath,FileMode.Open);

byte[]bytes=newbyte[(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();

}

//----------------------------------------------------------

publicvoidDownloadFile(System.Web.UI.PageWebForm,StringFileNameWhenUserDownload,StringFileBody)

{

WebForm.Response.ClearHeaders();

WebForm.Response.Clear();

WebForm.Response.Expires=0;

WebForm.Response.Buffer=true;

WebForm.Response.AddHeader("Accept-Language","zh-tw");

//'文件名称

WebForm.Response.AddHeader("content-disposition","attachment;filename='"+System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload,System.Text.Encoding.UTF8)+"'");

WebForm.Response.ContentType="Application/octet-stream";

//'文件内容

WebForm.Response.Write(FileBody);//-----------

WebForm.Response.End();

}

//上面这段代码是下载一个动态产生的文本文件,若这个文件已经存在于服务器端的实体路径,则可以通过下面的函数:

publicvoidDownloadFileByFilePath(System.Web.UI.PageWebForm,StringFileNameWhenUserDownload,StringFilePath)

{

WebForm.Response.ClearHeaders();

WebForm.Response.Clear();

WebForm.Response.Expires=0;

WebForm.Response.Buffer=true;

WebForm.Response.AddHeader("Accept-Language","zh-tw");

//文件名称

WebForm.Response.AddHeader("content-disposition","attachment;filename='"+System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload,System.Text.Encoding.UTF8)+"'");

WebForm.Response.ContentType="Application/octet-stream";

//文件内容

WebForm.Response.Write(System.IO.File.ReadAllBytes(FilePath));//---------

WebForm.Response.End();

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--保存文档

stringdocName,docExtended;

Streamdoc=fuDoc.FileContent;

intdocLength=fuDoc.PostedFile.ContentLength;

byte[]docData=newbyte[docLength];

doc.Read(docData,0,docLength);

docExtended=fuDoc.FileName.Substring(fuDoc.FileName.IndexOf("."));

if(string.IsNullOrEmpty(tbDoc.Text))

docName=fuDoc.FileName;

else

docName=tbDoc.Text+docExtended;

SafetyDocInfodata=newSafetyDocInfo(ddlSort.Text,docName,fuDoc.PostedFile.ContentType,docData);

SafetyDocsafety=newSafetyDoc();

safety.Insert(data);

tbDoc.Text=string.Empty;

--打开文档

publicvoidViewSafetyDoc(stringpDocSort,stringpDocName)

{

OracleParameter[]parms=GetSafetyDocParm(SQL_View_SafetyDoc);

parms[0].Value=pDocSort;

parms[1].Value=pDocName;

using(OracleDataReaderrdr=OracleHelper.ExecuteReader(OracleHelper.ConnectionString,CommandType.Text,SQL_View_SafetyDoc,parms))

{

while(rdr.Read())

{

HttpContext.Current.Response.Clear();

HttpContext.Current.Response.Buffer=true;

HttpContext.Current.Response.Charset="GB2312";

HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");

HttpContext.Current.Response.ContentType=rdr.GetString(1);

HttpContext.Current.Response.BinaryWrite((byte[])rdr["Doc"]);

stringFileName=rdr.GetString(0);

FileName=System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8);

HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+FileName);

}

}

}

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:asp中利用xmlhttp抓取网页内容的代码

 

下一篇:Asp.net 文件上传类(取得文件后缀名,保存文件,加入文

发布日期:2023/11/8
手机扫二维码直达本页
发布时间:15:21:57
点  击:18
录  入:星儿
相关文章
Baidu
YiJiaCMS 7.5.1 build240527(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....