透明 发表于 2015-1-16 22:58:18

ASP网页设计多文件上传组件

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安全

乐观 发表于 2015-1-20 06:51:20

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

小女巫 发表于 2015-1-28 22:23:50

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

愤怒的大鸟 发表于 2015-2-5 22:54:25

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

透明 发表于 2015-2-14 01:44:23

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

若天明 发表于 2015-3-4 03:57:11

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。

飘灵儿 发表于 2015-3-11 16:08:51

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

再见西城 发表于 2015-3-19 01:21:55

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

活着的死人 发表于 2015-3-27 00:41:13

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
页: [1]
查看完整版本: ASP网页设计多文件上传组件