仓酷云

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

[学习教程] ASP.NET教程之使用.NET的File控件上传文件的终极办理...

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:36:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
c++是语言,其实C++和java的应用范围根本就不一样的。在java应用的领域内,c++是不合适的。所以微软才搞了C#和Java对抗。团体版|办理|控件|上传在遍历了csdn中一切关于上传年夜文件的帖子今后,写了这片渣滓。(:-))
上传年夜文件,有好几种办法:
1、思回的HttpWorkerRequest办法,太难,看不懂:-(
2、使用第三方的控件AspNetUpload要钱!!算了,咱仍是喜好收费的。
3、修正web.config文件,可是不克不及捕捉毛病。
4、经由过程ftp的体例上传。服务器必要供应ftp服务。

没辙,只好选第三种体例,谁让咱太蠢了呢!(太蠢了,没有干系,要多吃鱼,传闻吃鱼能伶俐点。)

那就细心专研第三种体例吧!

修正Webcong文件:
<system.web>
<httpRuntimemaxRequestLength="40690"
useFullyQualifiedRedirectUrl="true"
executionTimeout="6000"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
enableVersionHeader="true"
/>
</system.web>

个中与上传有亲切干系的是:
maxRequestLength
唆使ASP.NET撑持的最年夜文件上载巨细。
该限定可用于避免因用户将大批文件传送到该服务器而招致的回绝服务打击。
指定的巨细以KB为单元。
默许值为4096KB(4MB)。

executionTimeout
唆使在被ASP.NET主动封闭前,同意实行哀求的最年夜秒数。
单元为秒,在上传年夜的文件时把这个设的年夜一些。


假如服务器内存512M,已可上传巨细160M的文件。(没试过,csdn上众帖子的分歧定见。)
www.ckuyun.com
到这里web.config的设置就已停止。
但是一旦上传文件的巨细凌驾了这个设置的文件巨细局限就会产生以下毛病:
该页没法显现
您要检察的页以后不成用。网站大概碰到手艺成绩,大概您必要调剂扫瞄器设置。

固然办理不了,那也要捕捉这个毛病啊!怎样办呢?
比来吃了几条鱼,想了想,因为这个毛病是由file控件激发的前台毛病,以是在背景想使用try...catch来捕捉是行欠亨的。
因而想到了使用.NET的毛病捕捉页面的机制来处置。可行哦。

1、先设置web.config
<customErrorsmode="On"/>
2、新建一个error.aspx文件,专门用来捕捉毛病的。
3、在上传文件的aspx页面的前台页面里增加page指令。ErrorPage="UploadError.aspx"
4、在error.aspx中增加一些代码来判别毛病信息是不是是file引发的前台毛病。
publicclassUploadError:System.Web.UI.Page
{
privatevoidPage_Load(objectsender,System.EventArgse)
{
Exceptionex=Server.GetLastError();
if(ex!=null)
{
Response.Redirect("../error.aspx");
}
else//前台毛病ex为空值
{
Response.Redirect("uploadexcel.aspx?err=1");//从头跳转到上传页面,加上err参数是为了显现毛病信息
}
}

5、显现毛病提醒。
publicclassuploadexcel:System.Web.UI.Page
{
privatevoidPage_Load(objectsender,System.EventArgse)
{
if(Request["err"]=="1")
{
Page.RegisterStartupScript("budget","<scriptlanguage=javascript>alert(Uploadfilehasfailed!Filesizeistoolarge!)</script>");
}
}
}

6、弄定出工。(这鱼没有白吃啊)

经由上述修正,如今的上传酿成了,程序指定文件巨细,假如凌驾,则弹堕落误提醒。
如许一来,就很多多少了,最最少本人能承受了,跟用户注释也不太费力了。因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-27 21:45:20 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
再见西城 该用户已被删除
板凳
发表于 2015-2-5 11:40:54 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
admin 该用户已被删除
地板
发表于 2015-2-11 14:40:23 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
只想知道 该用户已被删除
5#
发表于 2015-3-2 14:26:02 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
谁可相欹 该用户已被删除
6#
发表于 2015-3-11 04:09:46 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
若天明 该用户已被删除
7#
发表于 2015-3-17 20:12:00 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
变相怪杰 该用户已被删除
8#
发表于 2015-3-25 00:07:58 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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