昨天做了一个小小的模块,是关于点击某处一个linkbutton下载文件的的。此前对于这个我毫无经验。
在网上搜了好久,见过的方案主要有两种:
1.最简单的,我也采用了的。直接
- Response.Redirect("/* 文件的相对路径*/ ");
这种方案,对于一般的情形已经足够,不需要考虑文件格式。
但还有一些特殊的场合,我们不得不考虑第二种方案。
这些特殊的情形主要是:文件太大,用上面的方法会被拒绝,或者是需要动态生成文件及其文件名
2.这一种方法就是采用二进制处理,将目标文档以二进制形式写入流文件,然后再以目标格式输出,这种方案复杂但是却很灵活,可以控制器内容和名称的输出。
下面是一段来自网上的代码,仅供参考:
- public void DownLoad( )
- {
- string filePath = Server.MapPath( @"/UserFile/" );//指明要下载文件的路径.
- if ( System.IO.File.Exists( filePath ) )
- {
- FileInfo file = new FileInfo( filePath );
- Response.ContentEncoding = System.Text.Encoding.GetEncoding( "UTF-8" ); //解决中文乱码
- Response.AddHeader( "Content-Disposition", "attachment; filename=" + Server.UrlEncode( file.Name ) ); //解决中文文件名乱码
- Response.AddHeader( "Content-length", file.Length.ToString() );
- Response.ContentType = "appliction/octet-stream";
- Response.WriteFile( file.FullName );
- Response.End();
- }
- }