仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 565|回复: 10
打印 上一主题 下一主题

[学习教程] ASP网页编程之年夜文件上传研讨

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:40:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.上传此次在项目中,用到了年夜文件上传,要上传的文件有100多m,因而研讨如今国际利用的年夜文件上传的
组件发明用的对照多的有两个控件AspnetUpload2.0和Lion.Web.UpLoadModule,别的另有思回在它的博客
堂中所说的举措http://blog.joycode.com/saucer/archive/2004/03/16/16225.aspx
两个控件的办法是:使用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody和ReadEntityBody办法从IIS为ASP.NET创建的pipe里分块读取数据。ChrisHynes为我们供应了如许的一个计划(用HttpModule),该计划除同意你上传年夜文件外,还能及时显现上传进度。
Lion.Web.UpLoadModule和AspnetUpload两个.NET组件都是使用的这个计划。
当上传单文件时,两个软件的办法是一样的,承继HttpModule
HttpApplicationapplication1=senderasHttpApplication;
HttpWorkerRequestrequest1=(HttpWorkerRequest)((IServiceProvider)HttpContext.Current).GetService(typeof(HttpWorkerRequest));
try
{
if(application1.Context.Request.ContentType.IndexOf("multipart/form-data")<=-1)
{
return;
}
//CheckTheHasEntityBody
if(!request1.HasEntityBody())
{
return;
}

intnum1=0;
TimeSpanspan1=DateTime.Now.Subtract(this.beginTime);

stringtext1=application1.Context.Request.ContentType.ToLower();

byte[]buffer1=Encoding.ASCII.GetBytes(("
--"+text1.Substring(text1.IndexOf("boundary=")+9)).ToCharArray());
intnum2=Convert.ToInt32(request1.GetKnownRequestHeader(11));
Progressprogress1=newProgress();

application1.Context.Items.Add("FileList",newHashtable());

byte[]buffer2=request1.GetPreloadedEntityBody();
num1+=buffer2.Length;

stringtext2=this.AnalysePreloadedEntityBody(buffer2,"UploadGUID");
if(text2!=string.Empty)
{
application1.Context.Items.Add("LionSky_UpLoadModule_UploadGUID",text2);
}
boolflag1=true;
if((num2>this.UpLoadFileLength())&&((0>span1.TotalHours)||(span1.TotalHours>3)))
{
flag1=false;
}
if((0>span1.TotalHours)||(span1.TotalHours>3))
{
flag1=false;
}
stringtext3=this.AnalysePreloadedEntityBody(buffer2,"UploadFolder");
ArrayListlist1=newArrayList();
RequestStreamstream1=newRequestStream(buffer2,buffer1,null,RequestStream.FileStatus.Close,RequestStream.ReadStatus.NoRead,text3,flag1,application1.Context,string.Empty);
list1.AddRange(stream1.ReadBody);
if(text2!=string.Empty)
{
progress1.FileLength=num2;
progress1.ReceivedLength=num1;
progress1.FileName=stream1.OriginalFileName;
progress1.FileCount=((Hashtable)application1.Context.Items["FileList"]).Count;
application1.Application["_UploadGUID_"+text2]=progress1;
}
if(!request1.IsEntireEntityBodyIsPreloaded())
{
byte[]buffer4;
ArrayListlist2;
intnum3=204800;
byte[]buffer3=newbyte[num3];
while((num2-num1)>=num3)
{
if(!application1.Context.Response.IsClientConnected)
{
this.ClearApplication(application1);
}
num3=request1.ReadEntityBody(buffer3,buffer3.Length);
num1+=num3;
list2=stream1.ContentBody;
if(list2.Count>0)
{
buffer4=newbyte[list2.Count+buffer3.Length];
list2.CopyTo(buffer4,0);
buffer3.CopyTo(buffer4,list2.Count);
stream1=newRequestStream(buffer4,buffer1,stream1.FileStream,stream1.FStatus,stream1.RStatus,text3,flag1,application1.Context,stream1.OriginalFileName);
}
else
{
stream1=newRequestStream(buffer3,buffer1,stream1.FileStream,stream1.FStatus,stream1.RStatus,text3,flag1,application1.Context,stream1.OriginalFileName);
}
list1.AddRange(stream1.ReadBody);
if(text2!=string.Empty)
{
progress1.ReceivedLength=num1;
progress1.FileName=stream1.OriginalFileName;
progress1.FileCount=((Hashtable)application1.Context.Items["FileList"]).Count;
application1.Application["_UploadGUID_"+text2]=progress1;
}
}
buffer3=newbyte[num2-num1];
if(!application1.Context.Response.IsClientConnected&&(stream1.FStatus==RequestStream.FileStatus.Open))
{
this.ClearApplication(application1);
}
num3=request1.ReadEntityBody(buffer3,buffer3.Length);
list2=stream1.Cont</p>asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。
蒙在股里 该用户已被删除
沙发
发表于 2015-1-20 10:56:36 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-21 20:50:11 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
兰色精灵 该用户已被删除
地板
发表于 2015-1-28 08:18:29 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
再见西城 该用户已被删除
5#
发表于 2015-1-29 19:53:02 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
因胸联盟 该用户已被删除
6#
 楼主| 发表于 2015-2-3 12:36:05 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-9 00:35:17 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
透明 该用户已被删除
8#
发表于 2015-2-26 15:35:34 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
9#
发表于 2015-3-8 15:47:46 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
不帅 该用户已被删除
10#
发表于 2015-3-16 03:43:17 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
山那边是海 该用户已被删除
11#
发表于 2015-3-22 19:28:23 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-10 04:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表