ASP.NET网站制作之ASP.NET技能:下载文件封闭窗体之办理方...
计算机发展到这个时候,很多技术日益成熟,想学好一种技术都是不容易的,当你学会用的时候你对它的很多原理可能很不了解)asp.net|技能|办理|下载关于下载时新翻开一窗口下载,下载完后必要封闭的一种:关于较小文件能够无效:
System.IO.FileInfofile=newSystem.IO.FileInfo("F:mp3mp3别哭我最爱的人.mp3");
Response.Clear();
Response.ClearHeaders();
Response.Buffer=false;
Response.Charset="GB2312";
Response.ContentEncoding=System.Text.Encoding.UTF8;
Response.ContentType="application/octet-stream";
Response.AddHeader("Content-Disposition","attachment;filename="+Server.UrlEncode("别哭我最爱的人.mp3"));
Response.AddHeader("Content-Length",file.Length.ToString());
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();
该代码能够完成输入文件并将新翻开的窗体封闭。
另外一种关于年夜文件,我们用上述代码不是较好,由于上述代码是将文件全缓存于服务器后才输入的,假如你的服务器流量年夜,且文件较年夜,不倡议用以上办法。
以下我测试过,较好能办理:
publicstaticboolResponseFile(HttpRequest_Request,HttpResponse_Response,string_fileName,string_fullPath,long_speed)
{
try
{
FileStreammyFile=newFileStream(_fullPath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
BinaryReaderbr=newBinaryReader(myFile);
try
{
_Response.AddHeader("Accept-Ranges","bytes");
_Response.Buffer=false;
longfileLength=myFile.Length;
longstartBytes=0;
intpack=10240;//10Kbytes
intsleep=(int)Math.Floor(1000*pack/_speed)+1;
if(_Request.Headers["Range"]!=null)
{
_Response.StatusCode=206;
string[]range=_Request.Headers["Range"].Split(newchar[]{=,-});
startBytes=Convert.ToInt64(range);
}
_Response.AddHeader("Content-Length",(fileLength-startBytes).ToString());
if(startBytes!=0)
{
_Response.AddHeader("Content-Range",string.Format("bytes{0}-{1}/{2}",startBytes,fileLength-1,fileLength));
}
_Response.AddHeader("Connection","Keep-Alive");
_Response.ContentType="application/octet-stream";
_Response.AddHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(_fileName,System.Text.Encoding.UTF8));
br.BaseStream.Seek(startBytes,SeekOrigin.Begin);
intmaxCount=(int)Math.Floor((fileLength-startBytes)/pack)+1;
for(inti=0;i<maxCount;i++)
{
if(_Response.IsClientConnected)
{
_Response.BinaryWrite(br.ReadBytes(pack));
Thread.Sleep(sleep);
}
else
{
i=maxCount;
}
}
_Response.Flush();
}
catch
{
returnfalse;
}
finally
{
br.Close();
myFile.Close();
}
}
catch
{
returnfalse;
}
returntrue;
}
这一种代码也是借签网上的
它也能够完成输入文件并封闭新翻开幕窗体
别的在测试傍边发明,服务器端与客户的操纵体系分歧
也会有一些意想不到的事变产生
一样平常来讲,用以上代码,如不克不及一般封闭,你能够查阅扫瞄器的设置,在初级中。
再者,你能够修正分歧的输入内容范例Response.ContentType="application/octet-stream";由于分歧的contenttype,在客户的真个注释多是纷歧样的。
有设法请复兴,接待会商
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。 那么,ASP.Net有哪些改进呢? 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
页:
[1]