|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP.NET和ASP的比较,技术上比较已经没什么可说的了.新一代在大部分程度来说当然是比旧一代好了.关键看你对所做软件的理解了.因人而定.会写的话也可能比ASP.NET写得更有效率和更方便重用上传(由于我还没完成我的组件,不包管文章中的代码的准确性.)
上传多文件
(SanderDuivestein)
先容
这是我写的一个上传文件的activex的组件.这个组件是利用winsocket控件挪用FTP提交文件.它仅仅事情在Ie3.02或更高的版本,但有些客户端利用Netscape,因而不能不找别的的办理计划.但我搜刮Internet和多少旧事组时,发明不止我一个有如许的请求.
在1999.3.11,看到啦DougDean的一篇15Seconds的文章(关于用VBasp组件上传文件)给我啦一个很好的提醒.
DougDean的组件复杂而且易用.但他说,但是,多元件的上传成绩没办理?因此仍旧有一些事情要完成.
在我入手下手做本人的组件之前,我想晓得其他相似控件供应甚么样的功效.因而我看啦别的3个出名的组件:
theuploadcomponentofSoftwareArtisans,theuploadcomponentofASPUpload,
andtheMicrosoftPostingAcceptor.
经由过程对照这些组件我觉的我的组件应当满意以下请求:
提交文件的HTML表单对asp组件应当是一黑盒子.也就是说组件能承受各类表单位件并能失掉表单位件的名字和值.
它应能供应一个上传路径,而且限定巨细.
组件应当能处置多个的文件.
组件应当有一毛病处置程序.
组件应当功能很好.
组件应当能在NC中象IE一样事情.
保留文件进进数据库.
仅同意某组用能上载文件.
这些对我来讲是有相称的应战.
办理成绩
起首我要创立一HTML文件,它包括两个元件:一复杂的文本框,一文件框.这里给出以下代码:
1:Upload.htm
<HTML>
<HEAD><TITLE>Upload</TITLE></HEAD>
<BODY>
<FORMNAME="frmUpload"METHOD="Post"ENCTYPE="multipart/form-data"ACTION="Upload.asp"><TABLE>
<TR><TD>Author</TD><TD><INPUTTYPE="text"NAME="txtAuthor"></TD></TR>
<TR><TD>File</TD><TD><INPUTTYPE="file"NAME="txtFileName"></TD></TR>
<TR><TDCOLSPAN="2"ALIGN="right"><INPUTTYPE="Submit"VALUE="Upload"></TD></TR>
</TABLE>
</FORM>
</BODY>
</HTML>
利用ENCTYPE="multipart/form-data"使表单可以提交一文件.我们也必要一文件吸收文件.
2:Upload.asp
<%@Language=VBScript%>
<%
Optionexplicit
Response.Buffer=True
OnErrorResumeNext
IfRequest.ServerVariables("REQUEST_METHOD")="POST"Then
DimobjUpload
DimlngMaxFileBytes
DimstrUploadPath
DimvarResult
lngMaxFileBytes=10000
strUploadPath="c:inetpubwwwrootupload"
SetobjUpload=Server.CreateObject("pjUploadFile.clsUpload")
IfErr.Number0Then
Response.Write"Thecomponentwasntregistered"
Else
varResult=objUpload.DoUpload(lngMaxFileBytes,strUploadPath)
SetobjUpload=Nothing
Dimi
Fori=0toUBound(varResult,1)
Response.WritevarResult(i,0)&":"&varResult(i,1)&"<br>"
Next
EndIf
EndIf
%>
在这里设置上面两个变量:
lngMaxFileBytes-文件最年夜字节数,和strUploadPath-文件上传地位.我也增添了毛病处置程序反省是不是装进组件在网服务器上得当注册.这是我做的处置独一的一个毛病.假如任何别的的毛病产生,能够再到场处置它.最初,再声明varReturn.这变量用来承受组件的前往值.这前往值应当包括一切的表单位件名字和他们的值.你能瞥见FORNEXTloop中的程序,这前往值必需是一数组.
这是对照简单的部分.如今我们必需制造一ActiveX组件,用来处置提交的表单.
翻开vb6,选择一ActiveX项目(参阅步骤1:)
步骤1:
制造一ActiveXdll项目
起首,先增加一个援用,在菜单条上选定增加援用项,选中
ActiveServerPagesObjectlibrary.(参阅步骤2).
步骤2:
工程援用
经由过程这个库我们能利用asp的request的哀求工具.为包管能利用,要用以下代码:
OptionExplicit
PrivateMyScriptingContextAsScriptingContext
PrivateMyRequestAsRequest
PrivateMyResponseAsRequest
PublicSubOnStartPage(PassedScriptingContextAsScriptingContext)
SetMyScriptingContext=PassedScriptingContext
SetMyRequest=MyScriptingContext.Request
SetMyResponse=MySriptingContext.Response
EndSub
为何我们必要ASP库?经由过程request工具我们能失掉由upload.htm传来的http数据流.在那边为何有一个"可是"?当我们实验读表单字段名字和绝对的值,比方,Request.Form("txtTitle"),但我们就不克不及读出余下的发送给我们的原始数据.因而我们利用Request.TotalBytes和Request.BinaryRead读取发送的数据.
上面是我从DougDean失掉的代码:
~~~~~VARIABLES~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DimvarByteCount
DimbinArray()AsByte
~~~~~BYTECOUNTOFRAWFORMDATA~~~~~~~~~~~~
&nb</p>缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全 |
|