asp无组件上传类化境HTTP上传程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

asp无组件上传类的应用实例/化境HTTP上传程序

原版
upload_5xsoft.inc 文件内容





+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

原版
upfile.htm

+++++++++++++++++++++++++++++++++++++++++++++++++++


化境上传











  文件上传



















 化境编程界文件上传


  • 需要上传的个数








  • 上传到:


  • 文件1:











    +++++++++++++++++++++++++++++++++++++++++++++++++++

    原版
    upfile.asp

    +++++++++++++++++++++++++++++++++++++++++++++++++++

    <%OPTION EXPLICIT%>
    <%Server.ScriptTimeOut=5000%>



    文件上传



    化境文件上传!



    <%
    dim upload,file,formName,formPath,iCount
    set upload=new upload_5xsoft ''建立上传对象

    response.wri

    te upload.Version&"

    " ''显示上传类的版本

    if upload.form("filepath")="" then ''得到上传目录
    HtmEnd "请输入要上传至的目录!"
    set upload=nothing
    response.end
    else
    formPath=upload.form("filepath")
    ''在目录后加(/)
    if right(formPath,1)<>"/" then formPath=formPath&"/"
    end if

    iCount=0
    for each formName in upload.objForm ''列出所有form数据
    response.write formName&"="&upload.form(formName)&"
    "
    next

    response.write "
    "
    for each formName in upload.objFile ''列出所有上传了的文件
    set file=upload.file(formName) ''生成一个文件对象
    if file.FileSize>0 then ''如果 FileSize > 0 说明有文件数据
    file.SaveAs Server.mappath(formPath&file.FileName) ''保存文件
    response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "&formPath&File.FileName&" 成功!
    "
    iCount=iCount+1
    end if
    set file=nothing
    next

    set upload=nothing ''删除此对象
    Htmend iCount&" 个文件上传结束!"

    sub HtmEnd(Msg)
    set upload=nothing
    response.write "
    "&Msg&" [返回]"
    response.end
    end sub
    %>




    +++++++++++++++++++++++++++++++++++++++++
    文本类型README.TXT
    +++++++++++++++++++++++++++++++++++++++++


    化境ASP无组件上传类 - upload_5xsoft 使用手册 2.0

    / [ 下载 ]



    目 录

    1.What's New?

    2.关于 upload_5xsoft

    3.运行平台与注意事项

    4.如何得到表单数据

    5.如何得到文件数据

    6.类的成员与对象

    7.使用示例


    what's new


    1.使用了新的处理方式, 提供的高效的处理方式,上传速度可提高一倍以上,可上传更大的文件。

    2.添加了form 方法和file方法,把原来的 form 集和 file改为 objForm 和 objFile,避免了若上传时没有数据会出错的Bug。

    3.对多选框的优化,上传同名的多选框时,会自动用 ", " 连接起来。

    4.对于表单名,不再区分大小写,使用ASP使用者更习惯。



    关于 upload_5xsoft


    一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装

    第三方上传组件。可第三方组件有很多问题,有的组件要注册,有的组件要在表单中加上他的版权信息。

    还有的就是组件的兼容问题。

    在网上也流传了很多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中。

    我这段时间在研究ASP,发现可以不用第三方组件上传任意类型的文件。就写了这个类,给大家一

    个方便,整个类放在一个文件中: upload_5xsoft.inc 在 Example 目录下还有一个完整的多文件上传示

    例程序,可以直接使用。

    申明:源代码是完全开放的,可能随意传播,但请保留其完整性,未经作者

    同意,不得用于商业。



    运行平台与注意事项

    a)可直接运行于 Windows2000+IIS 5
    NT4 或是 Win98+PWS, 要安装ADO2.6 下载地址:/data/:
    就行了


    b) 在使用文件上传时, 表单 form 要加上 enctype="multipart/form-data" 即:









    upload_5xsoft的对象

    如定义一个上传对象

    <%
    set upload=new upload_5xsoft 'upload就是一个对象
    %>

    upload_5xsoft 对象成员
    File 方法,得到文件对象,例如:set file=upload.file("file1")

    文件对象成员下面有说明
    objFile 文件对象集,(是个dictionary对象)

    文件对象成员:
    Count 属性,文件表单的个数
    FileName 属性,上传文件的名字
    FileSize 属性,上传文件的大小(为0是表示没有文件)
    FilePath 属性,上传前文件所在的路径
    FormName 属性,文件表单的名字
    SaveAs 方法,储存上传后文件,有一个参数,路径要为真实路径如:
    例子: set file=upload.file("file1") 'file1为表单名

    response.write "
    文件名:"&file.FileName

    response.write "
    文件大小:"&file.FileSize

    response.write "
    文件路径:"&file.FilePath

    file.saveAs Server.mappath("/1.jpg")

    set file=nothing
    Form 方法,获得表单数据,如 Response.Write upload.Form("abc")
    objForm 表单数据集,(是个dictionary对象)用来代替 Request.Form
    count 属性,表单数
    exists 方法,检查是否有指定的表单名
    更多的用法可看 vbscript 的dictionary对象帮助
    例子:
    '得到text1表单的数据,uplaod就是一开始创建的对象

    sText=upload.form("text1")
    Version 属性,upload_5xsoft类的版本号,如:

    response.write upload.Version



    使用示例

    1.上传一个jpg文件的示例:

    文件1: upload.htm

    example








    文件2: upload.asp

    example


    <%
    set upload=new upload_5xsoft
    set file=upload.file("file1")
    response.write upload.form("submit")&"
    "
    if file.fileSize>0 then
    file.saveAs Server.mappath("temp.jpg")
    response.write "
    上传文件:"&file.FileName&" => temp.jpg OK!"
    response.write "
    文件大小:"&file.FileSize
    end if
    set file=nothing
    set upload=nothing
    %>


    2.列表出有文件表单(多文件上传)
    example


    <%
    set upload=new upload_5xsoft

    ''列出所有form数据
    for eac

    h formName in upload.objForm
    response.write formName&"="&upload.objForm(formName)&"
    "
    next

    ''列出所有文件
    for each formName in upload.objFile
    set file=upload.objFile(formName)
    if file.FileSize>0 then
    file.SaveAs Server.mappath(file.FileName)
    response.write file.FilePath&file.FileName&" ("&file.FileSize&") => "
    response.write file.FileName&" 成功!
    "
    end if
    set file=nothing
    next
    set upload=nothing
    %>


    另外的一些应用实例

    ''''''-------- upload.htm -------------







    ''' ------------fjupload.asp -----------------




    <%

    founderr=false
    SavePath = Server.MapPath("?????") '存放上传文件的目录


    call upload_0() '使用化境无组件上传类


    '上传程序
    sub upload_0() '使用化境无组件上传类

    set upload=new upload_file '建立上传对象

    dim msg '存储上传过程中发生的错误信息
    dim filecount '存储文件总数
    dim upcount '存储上传的文件总数
    filecount=0
    upcount=0
    for each formName in upload.file '列出所有上传了的文件
    set file=upload.file(formName) '生成一个文件对象
    if(file.filename<>"") then
    founderr=false
    filecount=filecount +1
    set file=upload.file(formName) '生成一个文件对象

    randomize
    ranNum=int(900*rnd)+100
    last_fn=hour(now()) & minute(now()) & second(now()) & ranNum '生成一段随机数附加到文件末尾,以防止文件名冲突
    ext_fn=file.fileext '扩展名

    filename=SavePath & "\" & file.smallfilename & "_" & last_fn
    if ext_fn<>"" then filename=filename & "." & ext_fn

    if fso.FileExists(filename) then
    msg=msg & "\r\n" & file.filename & " 文件已经存在,请更改文件名"
    founderr=true
    end if

    '如果可以上传,就执行上传
    if founderr<>true then
    file.SaveToFile FileName '保存文件
    if(err=0) then
    upcount = upcount + 1
    msg=msg & "\r\n" & file.filename & "上传成功!"
    '如果是

    rar文件进行解压缩
    if(lcase(file.fileext)="rar") then
    Call UnCompess(FileName,SavePath) '解压缩
    end if
    else
    msg=msg & "\r\n" & file.filename & "上传失败!"
    end if
    end if
    end if
    set file=nothing
    next
    set fso=nothing
    set upload=nothing
    '如果上传成功的文件数少于上传的文件数就弹出错误提示
    if(filecount>upcount) then
    %>
    <%response.write msg%>
    <% end if
    end sub
    %>

    <%
    '如果想实现自动解压,还需要将名为rar.exe和cmd.exe的文件拷贝到inc目录下
    '如果是rar文件,进行解压缩
    'fname: rar文件
    'fpath: 解压后文件存储路径
    sub UnCompess(fname,fpath)
    if(fpath="" or fname="") then exit sub
    dim ylj,ywj,Mlpath
    Mlpath=Request.ServerVariables("APPL_PHYSICAL_PATH") & "/inc/" '存放RAR.EXE和CMD.EXE的路径
    ylj=fpath &"\" '解压文件后所放的路径
    ywj=fname '要解压的RAR文件
    dim Shell,rarcomm,cmd,RetCode
    Set Shell = Server.CreateObject("WScript.Shell")
    rarcomm= Mlpath & "cmd.exe /c "&Mlpath&"rar.exe x -t -o+ -p- "
    cmd=rarcomm & ywj & " " & ylj
    RetCode = Shell.Run(cmd,1, True)
    '删除上传的rar文件
    set fso2=server.CreateObject("scripting.filesystemobject")
    if fso2.FileExists(ywj) then fso2.DeleteFile ywj
    set fso2=nothing
    end sub
    %>



    相关文档
    最新文档