
.net中下载文件的方法
一、//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", "attachmentfilename=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", "attachmentfilename=" + 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", "attachmentfilename=" + 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", "attachmentfilename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8))
Response.BinaryWrite(bytes)
Response.Flush()
Response.End()
}
//----------------------------------------------------------
public void DownloadFile( System.Web.UI.Page WebForm,String FileNameWhenUserDownload ,String FileBody )
{
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", "attachmentfilename='"+System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8)+"'")
WebForm.Response.ContentType = "Application/octet-stream"
//'文件内容
WebForm.Response.Write(FileBody)//-----------
WebForm.Response.End()
}
//上面这段代码是下载一个动态产生的文本文件,若这个文件已经存在于服务器端的实体路径,则可以通过下面的函数:
public void DownloadFileByFilePath( System.Web.UI.Page WebForm,String FileNameWhenUserDownload ,String FilePath )
{
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", "attachmentfilename='" + System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8) +"'" )
WebForm.Response.ContentType = "Application/octet-stream"
//文件内容
WebForm.Response.Write(System.IO.File.Rea}dAllBytes(FilePath))//---------
WebForm.Response.End()
}
1 新建安装部署项目打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定。2 安装向导关闭后打开安装向导,点击下一步,或者直接点击完成。3 开始制作安装向导完成后即可进入项目文件夹:双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你的做的应用程序的可执行文件和相应的类库和组件添加进来。然后右击你的文件,创建快捷方式,然后把快捷方式分别复制或剪切到左边的"用户的'程序'菜单"和"用户桌面"中。这样安装程序安装完成后会在 "开始->所有程序"和"桌面"上生成程序的快捷方式。也可以直接在"用户的'程序'菜单"和"用户桌面"相应目录下新建快捷方式,然后定位到你的文件。然后右击左边的"应用程序文件夹"打开属性对话框:将属性中的"DefaultLocation"的路径中的"[Manufacturer]"去掉,不然的话做好的安装程序默认安装目录会是"C:/Program Files/你的用户名/安装解决方案名称";然后打开解决方案管理器,右击你的解决方案名称,选择属性:打开的属性页中,选择"系统必备", 在打开的系统必备页中,在"指定系统必备安装组件的位置"中选中如下选择项:从与我的应用程序相同的位置下载系统必备组件。选上以后,在生成的安装文件包中包含.NetFramework组件 。好了,这样就完成99%了,然后点击"生成->生成解决方案",哈,生成成功!4 制作完成现在打开解决方案文件夹下的Debug文件夹,就可以看到生成的安装文件了。5 关于"卸载"功能的添加上面只介绍了简单的生成安装的方法,但是在VS2005下并没有直接生成卸载程序的功能,所以我们只好用msi来实现了, *** 作方法如下:在添加你的应用程序项目的时候,多添加一个msiexec.exe进去,这个文件在c:/windows/system32文件夹下,添加进去以后,为了让他更像个卸载程序,把他的名字改成"Uninstall.exe",当然这个关系不大,改不改都行。然后创建一个快捷方式,放到"开始-程序"中,接下来我们要做的就是查找这个部署项目的ProductCode了,鼠标左键单击项目名称,记住是左键单击,然后点击属性标签,注意:不是右击的属性,这个区别很大,这时你就可以看到ProductCode了。1. 在Visual Studio 2013中打开你的项目。2. 在菜单栏中,点击“视图”,然后选择“解决方案资源管理器”。
3. 右键单击你的项目,然后选择“生成解决方案”。
4. 等待Visual Studio完成编译过程,如果一切正常,你将在你的项目文件夹中看到一个叫做“xxx.exe”的文件(xxx是你的项目名称)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)