ASP.NET网站制作之怎样在 ASP.NET 中下载文件
效率会有不少的变化。而实际上java是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。这是笔者常被问到的一个成绩,怎样经由过程ASP.NET来下载文件,这个成绩小大由之,我们先从小的入手下手。这是笔者常被问到的一个成绩,怎样经由过程ASP.NET来下载文件,这个成绩小大由之,我们先从小的入手下手。当我们要让用户下载一个文件,最复杂的体例是经由过程Response.Redirect指令:Response.Redirect("test.doc")
您能够把下面这行指令放在Button的Click事务傍边,当用户点击按钮以后,网页就会被转址到该word档,形成下载的效果。
可是如许的下载有几个成绩:
1.没法下载不存在的文件:比方,我们如果想把程序静态(一时)发生的笔墨,看成一个文件下载的时分(也就是该文件实在本来并非真的存在,而是静态发生的),就没法下载。
2.没法下载存储于数据库中的文件:这是相似的成绩,该文件并没有真的存在,只是被寄存在数据库中的某个地位(某条记录中的某个栏位)的时分,就没法下载。
3.没法下载不存在于Web文件夹中的文件:文件的确存在,但该文件夹并非能够分享出来的Web文件夹,比方,该文件的地位在C:winnt,您总不会想要把该文件夹看成Web文件夹吧?这时候候,因为您没法利用Redirect指向该地位,以是没法下载。
4.下载文件后,底本的页面将会消散。
典范的情况是,我们要让用户下载一个.txt文件,或是.csv格局的Excel文件,可是...
1.这个文件多是经由过程ASP.NET程序静态发生的,而不是的确存在于Server真个文件;
2.或是它固然存在于伺服器真个某个实体地位,但我们其实不想表露这个地位(假如这个地位公然,极可能没有权限的用户也能够在网址栏上输出URL间接获得!!!)
3.或是这个地位其实不在网站假造路径地点的文件夹中。(比方C:WindowsSystem32...)
这时候候,我们就得接纳分歧的体例:
SharedFunctionDownloadFile(ByValWebFormAsSystem.Web.UI.Page,ByValFileNameWhenUserDownloadAsString,ByValFileBodyAsString)
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="&Chr(34)&System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload,System.Text.Encoding.UTF8)&Chr(34))
WebForm.Response.ContentType="Application/octet-stream"
文件内容
WebForm.Response.Write(FileBody)
WebForm.Response.End()
EndFunction
下面这段代码是下载一个静态发生的文本文件,若这个文件已存在于服务器真个实体路径,则能够经由过程上面的函数:
SharedSubDownloadFile(ByValWebFormAsSystem.Web.UI.Page,ByValFileNameWhenUserDownloadAsString,ByValFilePathAsString)
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="&Chr(34)&System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload,System.Text.Encoding.UTF8)&Chr(34))
WebForm.Response.ContentType="Application/octet-stream"
文件内容
WebForm.Response.Write(System.IO.File.ReadAllBytes(FilePath))
WebForm.Response.End()
EndSub
下面这两个下载文件的的函数,应可办理年夜多半开辟职员在ASP.NET傍边的文件下载成绩。
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
页:
[1]