无组件上传.docx

上传人:b****8 文档编号:10225587 上传时间:2023-02-09 格式:DOCX 页数:18 大小:20.62KB
下载 相关 举报
无组件上传.docx_第1页
第1页 / 共18页
无组件上传.docx_第2页
第2页 / 共18页
无组件上传.docx_第3页
第3页 / 共18页
无组件上传.docx_第4页
第4页 / 共18页
无组件上传.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

无组件上传.docx

《无组件上传.docx》由会员分享,可在线阅读,更多相关《无组件上传.docx(18页珍藏版)》请在冰豆网上搜索。

无组件上传.docx

无组件上传

第一个文件Class_UpFiles.asp内容

<%

DimUpFileStream

ClassUpFile_Class

    DimForm,File,Err

    PrivateSubClass_Initialize

        Err=-1

    EndSub

    PrivateSubClass_Terminate  

        '清除变量及对像

        IfErr<0Then

            Form.RemoveAll

            SetForm=Nothing

            File.RemoveAll

            SetFile=Nothing

            UpFileStream.Close

            SetUpFileStream=Nothing

        EndIf

    EndSub

  

    PublicSubGetData(MaxSize)

        '定义变量

        DimRequestBinDate,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo

        DimiFileSize,sFilePath,sFileType,sFormValue,sFileName

        DimiFindStart,iFindEnd

        DimiFormStart,iFormEnd,sFormName

        '代码开始

        IfRequest.TotalBytes<1Then  '如果没有数据上传

            Err=1

            ExitSub

        EndIf

        

        IfMaxSize>0Then'如果限制大小

            IfRequest.TotalBytes>MaxSizeThen

                Err=2    '如果上传的数据超出限制

                ExitSub

            EndIf

        EndIf

        

        SetForm=Server.CreateObject("Scripting.Dictionary")

        Form.CompareMode=1

        SetFile=Server.CreateObject("Scripting.Dictionary")

        File.CompareMode=1

        SettStream=Server.CreateObject("ADODB.Stream")

        SetUpFileStream=Server.CreateObject("ADODB.Stream")

        UpFileStream.Type=1

        UpFileStream.Mode=3

        UpFileStream.Open

        UpFileStream.WriteRequest.BinaryRead(Request.TotalBytes)

        UpFileStream.Position=0

        RequestBinDate=UpFileStream.Read

        iFormEnd=UpFileStream.Size

        bCrLf=ChrB(13)&ChrB(10)

        

        '取得每个项目之间的分隔符

        sSpace=MidB(RequestBinDate,1,InStrB(1,RequestBinDate,bCrLf)-1)

        iStart=LenB  (sSpace)

        iFormStart=iStart+2

        

        '分解项目

        Do

            iInfoEnd=InStrB(iFormStart,RequestBinDate,bCrLf&bCrLf)+3

            tStream.Type=1

            tStream.Mode=3

            tStream.Open

            UpFileStream.Position=iFormStart

            UpFileStream.CopyTotStream,iInfoEnd-iFormStart

            tStream.Position=0

            tStream.Type=2

            tStream.CharSet="gb2312"

            sInfo=tStream.ReadText

                  

            '取得表单项目名称

            iFormStart=InStrB(iInfoEnd,RequestBinDate,sSpace)-1

            iFindStart=InStr(22,sInfo,"name=""",1)+6

            iFindEnd=InStr(iFindStart,sInfo,"""",1)

            sFormName=Mid  (sinfo,iFindStart,iFindEnd-iFindStart)

            

            '如果是文件

            IfInStr(45,sInfo,"filename=""",1)>0Then

                SetoFileInfo=NewFileInfo_Class

                '取得文件属性

                iFindStart=InStr(iFindEnd,sInfo,"filename=""",1)+10

                iFindEnd=InStr(iFindStart,sInfo,"""",1)

                sFileName=Mid  (sinfo,iFindStart,iFindEnd-iFindStart)

                oFileInfo.FileName=Mid(sFileName,InStrRev(sFileName,"\")+1)

                oFileInfo.FilePath=Left(sFileName,InStrRev(sFileName,"\"))

                oFileInfo.FileExt=Mid(sFileName,InStrRev(sFileName,".")+1)

                iFindStart=InStr(iFindEnd,sInfo,"Content-Type:

",1)+14

                iFindEnd=InStr(iFindStart,sInfo,vbCr)

                oFileInfo.FileType=Mid  (sinfo,iFindStart,iFindEnd-iFindStart)

                oFileInfo.FileStart=iInfoEnd

                oFileInfo.FileSize=iFormStart-iInfoEnd-2

                oFileInfo.FormName=sFormName

                file.addsFormName,oFileInfo

            Else

                '如果是表单项目

                tStream.Close

                tStream.Type=1

                tStream.Mode=3

                tStream.Open

                UpFileStream.Position=iInfoEnd

                UpFileStream.CopyTotStream,iFormStart-iInfoEnd-2

                tStream.Position=0

                tStream.Type=2

                tStream.CharSet="gb2312"

                sFormValue=tStream.ReadText

                

                IfForm.Exists(sFormName)Then

                    Form(sFormName)=Form(sFormName)&","&sFormValue

                Else

                    form.AddsFormName,sFormValue

                EndIf

                

            EndIf

            tStream.Close

            iFormStart=iFormStart+iStart+2

            '如果到文件尾了就退出

        LoopUntil(iFormStart+2)>=iFormEnd

        RequestBinDate=""

        SettStream=Nothing

    EndSub

EndClass

'----------------------------------------------------------------------------------------------------

'文件属性类

ClassFileInfo_Class

    DimFormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt

    '保存文件方法

    PublicFunctionSaveToFile(Path)

        OnErrorResumeNext

        DimoFileStream

        SetoFileStream=CreateObject("ADODB.Stream")

        oFileStream.Type=1

        oFileStream.Mode=3

        oFileStream.Open

        UpFileStream.Position=FileStart

        UpFileStream.CopyTooFileStream,FileSize

        oFileStream.SaveToFilePath,2

        oFileStream.Close

        SetoFileStream=Nothing

    EndFunction

    '取得文件数据

    PublicFunctionFileData

        UpFileStream.Position=FileStart

        FileData=UpFileStream.Read(FileSize)

    EndFunction

EndClass

%>

第二个文件Form_UpFiles.asp  内容

上传文件

--本页面的作用是显示上传的页面,制定提交的页面-->

      

--enctype是指form表单提交时的信息编码类型-->

  

100%">

  

  

   是  

  

  

  

  

第三个文件Save_UpFiles.asp  

<%

OptionExplicit      '''''''''强制要求显式声明脚本中的所有变量。

必须使用在页面开头''''''''

Response.Buffer=True  '''输出缓冲页,这时redirect不可以使用,response.end'后才可以使用'''''

Server.ScriptTimeOut=9999999    ''''''''''指定服务器的超时时间''''''''''''''

%>

--#includefile="Class_UpFiles.asp"-->

<%

'''''''''''''''限制从外部非法提交,检测是否在同一域名(地址)下'''''''''''''''''''

IfInstr(Request.ServerVariables("http_referer"),"http:

//"&Request.Servervariables("host"))<1Then      '''''''http_referer是指来源页,"host"是指站内地址'''''''''''

    Response.Write"处理URL时服务器上出错!

请与管理员联系..."

    Response.End

EndIf

ConstG_FS_FSO="Scripting.FileSystemObject"'FSO组件名称

'---------------------------------------------

DimAllowFileType        ''''''申明文件类型的变量''''''

    AllowFileType="jpg|gif|rar|zip|exe"    '''''给变量附值'''''''''

DimAllowFileSize        '''''申明文件大小的变量

    AllowFileSize=102400    '''''给变量附值'''''    

DimCreate_DateCatalog        ''''创建上传文件存储目录''''

    Create_DateCatalog=True''''是否开启创建日期目录'''

'---------------------------------------------

DimAutoReName,UpFileObj,FileObject,FormName,FileName,FileExtStr,strFileName

DimFso,SavePath,AutoSavePath,AppearErr,ClueOn_Msg,StrJs

DimSameFileTF,No_UpFileTF,RealityPath

'---------------------------------------------

SavePath="uploading"'''保存所上传文件的目录''''''''

IfRight(SavePath,1)<>"/"Then    ''''从路径的右边第一个取值如果不是“/”,那么----''''

    SavePath=SavePath&"/"    ''''定义一个新的路径,即在远路径的目录下再建一目录''''

EndIf

SetUpFileObj=NewUpFile_Class

UpFileObj.GetData(10240000)

AutoReName=Trim(UpFileObj.Form("AutoRename"))'是否自动重命名文件

ClueOn_Msg=""

No_UpFileTF=True

AppearErr=False

IfIsObjInstalled(G_FS_FSO)=TrueThen

'------------------------------------------------------------------------------

SetFso=Server.CreateObject(G_FS_FSO)

    '--------------------------------------------------------------------------

    ForEachFormNameinUpFileObj.File'列出所有上传了的文件

    

        SetFileObject=UpFileObj.File(FormName)'生成一个文件对象

        SameFileTF=False

        FileName=FileObject.FileName

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1