Visualizzazione dei risultati da 1 a 5 su 5

Discussione: problema con la classe

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413

    problema con la classe

    ciao a tutti...ho questa classe che mi permette di gestire l'upload conservando i dati provenienti dal form
    ma ho un errore subito alla prima riga

    codice:
    Errore di compilazione di Microsoft VBScript error '800a03ea' 
    
    Errore di sintassi 
    
    class_upload.asp, line 2 
    
    Class FileUploader
    come mai subito all'apertura della classe??vi posto la classe completa:
    codice:
    <%
    Class FileUploader
      Public  Files
      Private mcolFormElem
      Public maxSize
      Public fileExt
      Public error
      Public errorDesc
    
      Private Sub Class_Initialize()
        Set Files = Server.CreateObject("Scripting.Dictionary")
        Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
      End Sub
    
      Private Sub Class_Terminate()
        If IsObject(Files) Then
          Files.RemoveAll()
          Set Files = Nothing
        End If
        If IsObject(mcolFormElem) Then
          mcolFormElem.RemoveAll()
          Set mcolFormElem = Nothing
        End If
      End Sub
    
      Public Property Get Form(sIndex)
        Form = ""
        If mcolFormElem.Exists(LCase(sIndex)) Then 
          Form = mcolFormElem.Item(LCase(sIndex))
        End If
      End Property
    
      Public Default Sub Upload()
        Dim biData, sInputName
        Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
        Dim nPosFile, nPosBound
    
        error = False
        errorDesc = ""
    
        'verifico se lo script che ha richiamato la classe
        'ha inizializzato la dimensione max del file
        If Not IsNull(maxSize) Then
          'se il file supera la dimensione stabilita si interrompe la sub
          If Request.TotalBytes > maxSize Then
            Error = True
            errorDesc = "File più grande di " & maxSize & " byte"
            Exit Sub
          End If
        End If
    
        biData = Request.BinaryRead(Request.TotalBytes)
    
        nPosBegin = 1
        nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
    
        If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
    
        vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
        nDataBoundPos = InstrB(1, biData, vDataBounds)
    
        Do Until nDataBoundPos=InstrB(biData,vDataBounds & CByteString("--"))
    
         nPos=InstrB(nDataBoundPos,biData,CByteString("Content-Disposition"))
         nPos = InstrB(nPos, biData, CByteString("name="))
         nPosBegin = nPos + 6
         nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
         sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
         nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
         nPosBound = InstrB(nPosEnd, biData, vDataBounds)
    
         If nPosFile <> 0 And  nPosFile < nPosBound Then
          Dim oUploadFile, sFileName, sFileExt
          Set oUploadFile = New UploadedFile
    
          nPosBegin = nPosFile + 10
          nPosEnd =  InstrB(nPosBegin, biData, CByteString(Chr(34)))
    
          sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
          sFileName1=Right(sFileName,Len(sFileName)-InStrRev(sFileName, "\"))
    
          oUploadFile.FileName=Right(sFileName, _
                     Len(sFileName)-InStrRev(sFileName,"\"))
    
          'recuperiamo l'estensione del file
          sfileExt = Right(sFileName1, _
                     Len(sFileName1)-InStrRev(sFileName1,"."))
                     
          'verifico se lo script che ha richiamato la classe
          'ha inizializzato il tipo di estenzioni ammesse
          If Not IsNull(fileExt) Then
           'se l'estenzione del file non è incluse tra quelle imposte
           'imterrompiamo la sub
           If Instr(fileExt, sFileExt) = 0 Then
            Error = True
            errorDesc = "Tipo di file non ammesso"
            Exit Sub
           End If
          End If
    
          nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
          nPosBegin = nPos + 14
          nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
    
          oUploadFile.ContentType = CWideString(MidB(biData, _
                     nPosBegin,nPosEnd-nPosBegin))
    
          nPosBegin = nPosEnd+4
          nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
          oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
    
          If oUploadFile.FileSize > 0 Then 
            Files.Add LCase(sInputName),oUploadFile
          End If
         Else
          nPos = InstrB(nPos, biData, CByteString(Chr(13)))
          nPosBegin = nPos + 4
          nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
          If Not mcolFormElem.Exists(LCase(sInputName)) Then 
           mcolFormElem.Add LCase(sInputName), _
                CWideString(MidB(biData,nPosBegin,nPosEnd-nPosBegin))
          End If
         End If
    
         nDataBoundPos=InstrB(nDataBoundPos+LenB(vDataBounds), _
                biData,vDataBounds)
        Loop
      End Sub
    
      'String to byte string conversion
      Private Function CByteString(sString)
        Dim nIndex
        For nIndex = 1 to Len(sString)
          CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
        Next
      End Function
    
      'Byte string to string conversion
      Private Function CWideString(bsString)
        Dim nIndex
        CWideString =""
        For nIndex = 1 to LenB(bsString)
          CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) 
        Next
      End Function
    End Class
    
    Class UploadedFile
      Public ContentType
      Public FileName
      Public FileData
    
      Public Property Get FileSize()
        FileSize = LenB(FileData)
      End Property
    
      Public Sub SaveToDisk(sPath)
        Dim oFS, oFile
        Dim nIndex
    
        If sPath = "" Or FileName = "" Then Exit Sub
        If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
    
        Set oFS = Server.CreateObject("Scripting.FileSystemObject")
        If Not oFS.FolderExists(sPath) Then Exit Sub
    
        Set oFile = oFS.CreateTextFile(sPath & FileName, True)
    
        For nIndex = 1 to LenB(FileData)
          oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
        Next
        oFile.Close
      End Sub
    
      Public Sub SaveToDatabase(ByRef oField)
        If LenB(FileData) = 0 Then Exit Sub
        If IsObject(oField) Then oField.AppendChunk FileData
      End Sub
    End Class
    %>
    il fatto che la classe viene inclusa potrebbe essere la causa???

    mah...help

  2. #2
    per avere le classi devi avere il vbscript engine versione 5.x.x

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413
    ma sul server o sul client???

    e se sul server come faccio????

  4. #4
    sul server ovviamente!
    se puoi installare software vai sul sito di microsoft è scarica l'ultima versione...
    se sei in hosting


  5. #5
    Ho sperimentato che una classe contenuta in un file incluso genera l'errore di cui sopra quando l'include è compreso fra una condizione...

    codice:
    <% if Request.QueryString("action") = "do" then %>
    
    <% end if %>
    ... mentre l'errore non risulta se l'include è "libero".

    Mah...!
    Ma onestamente, dài! Come si fa a chiamare vergine un CD che ci ha un buco in mezzo?!?.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.