无聊,申请了一个2级域名小弟想做个网页,实现本地文件上传,不过我不太懂ASP网上的东西又用不来特求源码尽量说的能详细点.谢谢

解决方案 »

  1.   

    问题是我不懂ASP..都不知道怎么调用...........
      

  2.   

    我刚刚下载了一个上传实例,我放在hello2008.zj.com麻烦会ASP的朋友帮我调通一下.谢谢
      

  3.   

    三个文件就可以了
    1.存为 upfile_class.asp
    <%
    Dim oUpFileStream
    '文件上传类
    Class UpFile_ClassDim Form,File,Version,Err Private Sub Class_Initialize
     Version = "无惧上传类 Version V1.2"
     Err = -1
    End SubPrivate Sub Class_Terminate  
      '清除变量及对像
      If Err < 0 Then
        Form.RemoveAll
        Set Form = Nothing
        File.RemoveAll
        Set File = Nothing
        oUpFileStream.Close
        Set oUpFileStream = Nothing
      End If
    End Sub
       
    Public Sub GetData (MaxSize)
       '定义变量
      Dim RequestBinData,sSpace,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo
      Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
      Dim iFindStart,iFindEnd
      Dim iFormStart,iFormEnd,sFormName
       '代码开始
      If Request.TotalBytes < 1 Then  '如果没有数据上传
        Err = 1
        Exit Sub
      End If
      If MaxSize > 0 Then '如果限制大小
        If Request.TotalBytes > MaxSize Then
        Err = 2 '如果上传的数据超出限制
        Exit Sub
        End If
      End If
      Set Form = Server.CreateObject ("Scripting.Dictionary")
      Form.CompareMode = 1
      Set File = Server.CreateObject ("Scripting.Dictionary")
      File.CompareMode = 1
      Set tStream = Server.CreateObject ("ADODB.Stream")
      Set oUpFileStream = Server.CreateObject ("ADODB.Stream")
      oUpFileStream.Type = 1
      oUpFileStream.Mode = 3
      oUpFileStream.Open 
      oUpFileStream.Write Request.BinaryRead (Request.TotalBytes)
      oUpFileStream.Position = 0
      RequestBinData = oUpFileStream.Read 
      iFormEnd = oUpFileStream.Size
      bCrLf = ChrB (13) & ChrB (10)
      '取得每个项目之间的分隔符
      sSpace = MidB (RequestBinData,1, InStrB (1,RequestBinData,bCrLf)-1)
      iStart = LenB  (sSpace)
      iFormStart = iStart+2
      '分解项目
      Do
        iInfoEnd = InStrB (iFormStart,RequestBinData,bCrLf & bCrLf)+3
        tStream.Type = 1
        tStream.Mode = 3
        tStream.Open
        oUpFileStream.Position = iFormStart
        oUpFileStream.CopyTo tStream,iInfoEnd-iFormStart
        tStream.Position = 0
        tStream.Type = 2
        tStream.CharSet = "gb2312"
        sInfo = tStream.ReadText      
        '取得表单项目名称
        iFormStart = InStrB (iInfoEnd,RequestBinData,sSpace)-1
        iFindStart = InStr (22,sInfo,"name=""",1)+6
        iFindEnd = InStr (iFindStart,sInfo,"""",1)
        sFormName = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)
        '如果是文件
        If InStr  (45,sInfo,"filename=""",1) > 0 Then
          Set oFileInfo = new FileInfo_Class
          '取得文件属性
          iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10
          iFindEnd = InStr (iFindStart,sInfo,"""",1)
          sFileName = Mid  (sinfo,iFindStart,iFindEnd-iFindStart)
          oFileInfo.FileName = trim(Mid (sFileName,InStrRev (sFileName, "\")+1))
          oFileInfo.FilePath = trim(Left (sFileName,InStrRev (sFileName, "\")))
          oFileInfo.FileExt = trim(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.add sFormName,oFileInfo
        else
        '如果是表单项目
          tStream.Close
          tStream.Type = 1
          tStream.Mode = 3
          tStream.Open
          oUpFileStream.Position = iInfoEnd 
          oUpFileStream.CopyTo tStream,iFormStart-iInfoEnd-2
          tStream.Position = 0
          tStream.Type = 2
          tStream.CharSet = "gb2312"
          sFormValue = tStream.ReadText
          If Form.Exists (sFormName) Then
            Form (sFormName) = Form (sFormName) & ", " & sFormValue
            else
            form.Add sFormName,sFormValue
          End If
        End If
        tStream.Close
        iFormStart = iFormStart+iStart+2
        '如果到文件尾了就退出
      Loop Until  (iFormStart+2) >= iFormEnd 
      RequestBinData = ""
      Set tStream = Nothing
    End Sub
    End Class'----------------------------------------------------------------------------------------------------
    '文件属性类
    Class FileInfo_Class
    Dim FormName,FileName,FilePath,FileSize,FileType,FileStart,FileExt
    '保存文件方法
    Public Function SaveToFile (Path)
      On Error Resume Next
      Dim oFileStream
      Set oFileStream = CreateObject ("ADODB.Stream")
      oFileStream.Type = 1
      oFileStream.Mode = 3
      oFileStream.Open
      oUpFileStream.Position = FileStart
      oUpFileStream.CopyTo oFileStream,FileSize
      oFileStream.SaveToFile Path,2
      oFileStream.Close
      Set oFileStream = Nothing 
    End Function
     
    '取得文件数据
    Public Function FileData
      oUpFileStream.Position = FileStart
      FileData = oUpFileStream.Read (FileSize)
    End FunctionEnd Class
    %>
      

  4.   

    2.存为Upload_Photo.asp
    <%@language=vbscript codepage=936 %>
    <!--#include file="upfile_class.asp"-->
    <%
    const upload_type=0   
    const SaveUpFilesPath="Uploadpic"const UpFileType="jpg|gif|bmp|png|swf"
    const MaxFileSize=102400
    const EnableUploadFile="Yes"
    dim upload,oFile,formName,SavePath,filename,fileExt,oFileSize
    dim EnableUpload
    dim arrUpFileType
    dim ranNum
    dim msg,FoundErr
    dim PhotoUrlID
    msg=""
    FoundErr=false
    EnableUpload=false
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <style type="text/css">
    <!--
    BODY{
    BACKGROUND-COLOR: #eeeeee;
    font-size:9pt
    }
    .tx1 { height: 20px;font-size: 9pt; border: 1px solid; border-color: #000000; color: #0000FF}
    -->
    </style>
    </head>
    <body leftmargin="2" topmargin="5" marginwidth="0" marginheight="0">
    <%
    if EnableUploadFile="No" then
    response.write "系统未开放文件上传功能"
    else

    select case upload_type
    case 0
    call upload_0()  '使用化境无组件上传类
    case else
    'response.write "本系统未开放插件功能"
    'response.end
    end select

    end if
    %>
    </body>
    </html>
    <%
    sub upload_0()    '使用化境无组件上传类
    set upload=new upfile_class ''建立上传对象
    upload.GetData(104857600)   '取得上传数据,限制最大上传100M
    if upload.err > 0 then  '如果出错
    select case upload.err
    case 1
    response.write "请先选择你要上传的文件!"
    case 2
    response.write "你上传的文件总大小超出了最大限制(100M)"
    end select
    response.end
    end if

    SavePath = SaveUpFilesPath   '存放上传文件的目录

    if right(SavePath,1)<>"/" then SavePath=SavePath&"/" '在目录后加(/)

    for each formName in upload.file '列出所有上传了的文件
    EnableUpload=False
    set ofile=upload.file(formName)  '生成一个文件对象
    oFileSize=ofile.filesize
    if oFileSize<100 then
    msg="请先选择你要上传的文件!"
    FoundErr=True
    elseif oFileSize>(MaxFileSize*1024) then
      msg="文件大小超过了限制,最大只能上传" & CStr(MaxFileSize) & "K的文件!"
    FoundErr=true
    end if fileExt=lcase(ofile.FileExt)
    arrUpFileType=split(UpFileType,"|")
    for i=0 to ubound(arrUpFileType)
    if fileEXT=trim(arrUpFileType(i)) then
    EnableUpload=true
    exit for
    end if
    next
    if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" or fileEXT="cer" or fileEXT="cdx" then
    EnableUpload=false
    end if
    if EnableUpload=false then
    msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType
    FoundErr=true
    end if


    strJS="<SCRIPT language=javascript>" & vbcrlf
    if FoundErr<>true then
    randomize
    ranNum=int(900*rnd)+100
    filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt ofile.SaveToFile Server.mappath(FileName)   '保存文件 response.write "图片上传成功!图片大小为:" & cstr(round(oFileSize/1024)) & "K"

    else
    strJS=strJS & "alert('" & msg & "');" & vbcrlf
       strJS=strJS & "history.go(-1);" & vbcrlf
    end if
    strJS=strJS & "</script>" & vbcrlf
    response.write strJS

    set file=nothing
    next
    set upload=nothing
    end sub
    %>
      

  5.   

    搞错,第2存为Upfile_Photo.asp
    3.存为Upload_Photo.asp,然后放在WEB根目录下,再建一个空的目录Uploadpic放上传的图片就可以了
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <style type="text/css">
    <!--
    BODY{
    BACKGROUND-COLOR: #eeeeee;
    font-size:9pt
    }
    .tx1 { height: 20px;font-size: 9pt; border: 1px solid; border-color: #000000; color: #0000FF}
    -->
    </style><SCRIPT language=javascript>
    function check() 
    {
    var strFileName=document.form1.FileName.value;
    if (strFileName=="")
    {
         alert("请选择要上传的文件");
    document.form1.FileName.focus();
         return false;
       }
    }
    </SCRIPT>
    </head>
    <body leftmargin="0" topmargin="0"><form action="Upfile_Photo.asp" method="post" name="form1" onSubmit="return check()" enctype="multipart/form-data">
      <input name="FileName" type="FILE" class="tx1" size="30">
      <input type="submit" name="Submit" value="上传" style="border:1px double rgb(88,88,88);font:9pt">
    </form></body>
    </html>
      

  6.   

    我看你测试的服务器是Apache的,而且不支持ASP,所以你怎么试也是不行的。
      

  7.   

    呵呵.楼主够晕的,状况都没搞清楚就在搞ASP了.
      

  8.   

    楼主,建议你学下ASP,这样方便很多的,不然什么搞出来的东东水平也有限