分手快乐 发表于 2015-1-16 22:11:18

ASP编程:化境ASP无组件上传

ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。上传|无组件  一向以来,因为FileSystemObject的范围,以是ASP最年夜的困难就是文件上传,年夜多办理法就是安装第三方上传组件。可第三方组件有良多成绩,有的组件要注册,有的组件要在表单中加上他的版权信息。另有的就是组件的兼容成绩。在网上也传播了良多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中。作者这段工夫在研讨ASP,发明能够不必第三方组件上传恣意范例的文件。就写了这个类,给人人一个便利,全部类放在一个文件:upload_5xsoft.inc在Example目次下另有一个完全的多文件上传示例程序,能够间接利用。
  因为《化境无组件上传程序》成绩良多,良多网友都发来他们本人的修正版,各有特性。这里,作者接纳了网友梁无惧给出的修正版,再作了些修正,办理了本来的已发明的一切成绩(详细看申明)。上传速率也有了很年夜的进步。
  upload_5xsoft.inc
  <SCRIPTRUNAT=SERVERLANGUAGE=VBSCRIPT>


请保存此信息:稻喷鼻老农制造


dimupfile_5xSoft_Stream
Classupload_5xSoft

dimForm,File,Version

PrivateSubClass_Initialize
dimiStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dimstrDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version="化境编程界HTTP上传程序Version1.0"
ifRequest.TotalBytes<1thenExitSub
setForm=CreateObject("Scripting.Dictionary")
setFile=CreateObject("Scripting.Dictionary")
setupfile_5xSoft_Stream=CreateObject("Adodb.Stream")
upfile_5xSoft_Stream.mode=3
upfile_5xSoft_Stream.type=1
upfile_5xSoft_Stream.open
upfile_5xSoft_Stream.writeRequest.BinaryRead(Request.TotalBytes)
vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
whileiFormStart<iFormEnd
iStart=inString(iFormStart,"name=""")
iEnd=inString(iStart+6,"""")
mFormName=subString(iStart+6,iEnd-iStart-6)
iFileNameStart=inString(iEnd+1,"filename=""")
ifiFileNameStart>0andiFileNameStart<iFormEndthen
iFileNameEnd=inString(iFileNameStart+10,"""")
mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
ifiEnd>iStartthen
mFileSize=iEnd-iStart-4
else
mFileSize=0
endif
settheFile=newFileInfo
theFile.FileName=getFileName(mFileName)
theFile.FilePath=getFilePath(mFileName)
theFile.FileSize=mFileSize
theFile.FileStart=iStart+4
theFile.FormName=FormName
file.addmFormName,theFile
else
iStart=inString(iEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
ifiEnd>iStartthen
mFormValue=subString(iStart+4,iEnd-iStart-4)
else
mFormValue=""
endif
form.AddmFormName,mFormValue
endif
iFormStart=iformEnd+iDivLen
iFormEnd=inString(iformStart,strDiv)-1
wend
EndSub
PrivateFunctionsubString(theStart,theLen)
dimi,c,stemp
upfile_5xSoft_Stream.Position=theStart-1
stemp=""
fori=1totheLen
ifupfile_5xSoft_Stream.EOSthenExitfor
c=ascB(upfile_5xSoft_Stream.Read(1))
Ifc>127Then
ifupfile_5xSoft_Stream.EOSthenExitfor
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))
i=i+1
else
stemp=stemp&Chr(c)
EndIf
Next
subString=stemp
Endfunction
PrivateFunctioninString(theStart,varStr)
dimi,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
fori=theStarttoupfile_5xSoft_Stream.Size-theLen
ifi>upfile_5xSoft_Stream.sizethenexitFunction
upfile_5xSoft_Stream.Position=i-1
ifAscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1))then
InString=i
forj=2totheLen
ifupfile_5xSoft_Stream.EOSthen
inString=0
Exitfor
endif
ifAscB(upfile_5xSoft_Stream.Read(1))AscB(MidB(Str,j,1))then
InString=0
ExitFor
endif
next
ifInString0thenExitFunction
endif
next
EndFunction
PrivateSubClass_Terminate
form.RemoveAll
file.RemoveAll
setform=nothing
setfile=nothing
upfile_5xSoft_Stream.close
setupfile_5xSoft_Stream=nothing
EndSub


PrivatefunctionGetFilePath(FullPath)
IfFullPath""Then
GetFilePath=left(FullPath,InStrRev(FullPath,""))
Else
GetFilePath=""
EndIf
Endfunction

PrivatefunctionGetFileName(FullPath)
IfFullPath""Then
GetFileName=mid(FullPath,InStrRev(FullPath,"")+1)
Else
GetFileName=""
EndIf
Endfunction
PrivatefunctiontoByte(Str)
dimi,iCode,c,iLow,iHigh
toByte=""
Fori=1ToLen(Str)
c=mid(Str,i,1)
iCode=Asc(c)
IfiCode<0TheniCode=iCode+65535
IfiCode>255Then
iLow=Left(Hex(Asc(c)),2)
iHigh=Right(Hex(Asc(c)),2)
toByte=toByte&chrB("&H"&iLow)&chrB("&H"&iHigh)
Else
toByte=toByte&chrB(AscB(c))
EndIf
Next
Endfunction
EndClass

ClassFileInfo
dimFormName,FileName,FilePath,FileSize,FileStart
PrivateSubClass_Initialize
FileName=""
FilePath=""
FileSize=0
FileStart=0
FormName=""
EndSub

PublicfunctionSaveAs(FullPath)
dimdr,ErrorChar,i
SaveAs=1
iftrim(fullpath)=""orFileSize=0orFileStart=0orFileName=""thenexitfunction
ifFileStart=0orright(fullpath,1)="/"thenexitfunction
setdr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=1
dr.Open
upfile_5xSoft_Stream.position=FileStart-1
upfile_5xSoft_Stream.copytodr,FileSize
dr.SaveToFileFullPath,2
dr.Close
setdr=nothing
SaveAs=0
endfunction
EndClass
</SCRIPT>
  upfile.asp
<%OPTIONEXPLICIT%>
<!--#includeFILE="upload_5xsoft.inc"-->
<html>
<head>
<title>文件上传</title>
</head>
<body>
<br>化境文件上传!<hrsize=1noshadowwidth=300align=left><br><br>
</body>
</html>
  upfile.htm
<html>
<head>
<title>UntitledDocument</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<styletype="text/css">
<!--
td{font-size:9pt}
a{color:#000000;text-decoration:none}
a:hover{text-decoration:underline}
.tx{height:16px;width:30px;border-color:blackblack#000000;border-top-width:0px;border-right-width:0px;border-bottom-width:1px;border-left-width:0px;font-size:9pt;background-color:#eeeeee;color:#0000FF}
.bt{font-size:9pt;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;height:16px;width:80px;background-color:#eeeeee;cursor:hand}
.tx1{height:20px;width:30px;font-size:9pt;border:1pxsolid;border-color:blackblack#000000;color:#0000FF}
-->
</style>
</head>
<bodybgcolor="#FFFFFF"text="#000000">
<formname="form1"method="post"action="upfile.asp"enctype="multipart/form-data">
<tableborder="1"cellspacing="0"cellpadding="0"bordercolorlight="#000000"bordercolordark="#CCCCCC"width="91"height="23">
<tr>
<tdalign="left"valign="middle"height="18"width="18"></td>
<tdbgcolor="#CCCCCC"align="left"valign="middle"height="18"width="67">文件上传</td>
</tr>
</table>
<br>
<inputtype="hidden"name="act"value="upload">
<br>
<tablewidth="71%"border="1"cellspacing="0"cellpadding="5"align="center"bordercolordark="#CCCCCC"bordercolorlight="#000000">
<trbgcolor="#CCCCCC">
<tdheight="22"align="left"valign="middle"bgcolor="#CCCCCC">化境编程界文件上传</td>
</tr>
<tralign="left"valign="middle"bgcolor="#eeeeee">
<tdbgcolor="#eeeeee"height="92">
<scriptlanguage="javascript">
functionsetid()
{
str=<br>;
if(!window.form1.upcount.value)
window.form1.upcount.value=1;
for(i=1;i<=window.form1.upcount.value;i++)
str+=文件+i+:<inputtype="file"name="file+i+"style="width:400"class="tx1"><br><br>;
window.upid.innerHTML=str+<br>;
}
</script>
<li>必要上传的个数
<inputtype="text"name="upcount"class="tx"value="1">
<inputtype="button"name="Button"class="bt"value="・设定・">
</li>
<br>
<br>
<li>上传到:
<inputtype="text"name="filepath"class="tx"style="width:350"value="">
</li>
</td>
</tr>
<tralign="center"valign="middle">
<tdalign="left"id="upid"height="122">文件1:
<inputtype="file"name="file1"style="width:400"class="tx1"value="">
</td>
</tr>
<tralign="center"valign="middle"bgcolor="#eeeeee">
<tdbgcolor="#eeeeee"height="24">
<inputtype="submit"name="Submit"value="・提交・"class="bt">
<inputtype="reset"name="Submit2"value="・重执・"class="bt">
</td>
</tr>
</table>
</form>
</body>
</html>
<scriptlanguage="javascript">
setid();
</script>
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。

爱飞 发表于 2015-1-25 21:34:49

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

冷月葬花魂 发表于 2015-2-4 04:46:08

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

活着的死人 发表于 2015-2-9 15:56:16

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

深爱那片海 发表于 2015-2-27 09:25:44

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

精灵巫婆 发表于 2015-3-9 00:49:11

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

灵魂腐蚀 发表于 2015-3-16 19:53:30

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

小魔女 发表于 2015-3-23 02:40:31

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
页: [1]
查看完整版本: ASP编程:化境ASP无组件上传