Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problema Upload - stringa rinomina file

    Analizzando questo script che rinomina i file inviati se sul server è gia presente un file con lo stesso nome!!....chi di voi sa dirmi dove prendere la stringa che rinomina il file?

    FileName restituisce il nome del file originale (quello inviato mediante form).


    Class FileUploader
    Public Files
    Private mcolFormElem
    Private imaxSize
    Private imaxFileSize
    Private bOverWrite
    Public fileExt
    Public error
    Public errorDesc

    Private Sub Class_Initialize()
    Set Files = Server.CreateObject("Scripting.Dictionary")
    Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
    bOverWrite = False
    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 Property

    Public Property Let maxFileSize(iSize)
    imaxFileSize = iSize
    End Property

    Public Property Get maxFileSize
    maxFileSize = imaxFileSize
    End Property

    Public Property Let maxSize(iSize)
    imaxSize = iSize
    End Property

    Public Property Get maxSize
    maxSize = imaxSize
    End Property

    Public Property Let OverWrite(bValue)
    bOverWrite = bValue
    End Property

    Public Property Get OverWrite
    OverWrite = bOverWrite
    End Property

    Public Default Sub Upload()
    Dim biData, sInputName
    Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
    Dim nPosFile, nPosBound
    Dim counter

    error = False
    errorDesc = ""

    'Se la somma delle dimensioni dei file è filtrata
    If Not IsNull(imaxSize) AND IsNumeric(imaxSize) AND imaxSize <> "" Then
    'Se la somma delle dimensioni dei file è maggiore a quella impostata genera ERRORE
    If Request.TotalBytes > imaxSize Then
    Error = True
    errorDesc = errorDesc & "La somma delle dimensioni dei file è più grande di " & imaxSize & " 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)

    'contatore dei file
    counter = 0

    'Cicla i dati contenenti le informazioni dei file
    Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))

    counter = counter + 1

    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, sFileName1, sFileExt, dotpos
    Set oUploadFile = New UploadedFile

    nPosBegin = nPosFile + 10
    nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))

    sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))

    'Se le estensioni sono filtrate
    If Not IsNull(fileExt) Then

    'Se il campo file del form contiene un file prosegui
    If sFileName <> "" Then

    'Ricaviamo nome completo, nome senza estensione, estensione
    sFileName1 = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
    dotpos = 0
    dotpos = InStrRev(sFileName1, ".")
    oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\")) 'nome completo
    oUploadFile.FileExt = Right(sFileName1, Len(sFileName1) - dotpos) 'estensione
    oUploadFile.FileNameShort = Left(sFileName1, dotpos-1) 'nome senza estensione
    oUploadFile.OverWrite = bOverWrite

    sfileExt = oUploadFile.FileExt

    'Se l'estensione non è tra quelle ammesse genera ERRORE
    If Instr(fileExt, sFileExt) = 0 Then
    Error = True
    errorDesc = errorDesc & "File #" & counter & "(" & oUploadFile.FileName & "): tipo di file non ammesso (solo " & fileExt & ")" & "
    "
    Else
    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) AND (oUploadFile.FileSize <= imaxFileSize) Then Files.Add LCase(sInputName), oUploadFile

    'Se la dimensione max per il singolo file non è filtrata allora può essere caricato
    If Not IsNull(imaxFileSize) AND IsNumeric(imaxFileSize) AND imaxFileSize <> "" Then

    'Se il file supera la dimensione max ammessa per il singolo file allora genera ERRORE
    If oUploadFile.FileSize > imaxFileSize Then
    Error = True
    errorDesc = errorDesc & "File #" & counter & "(" & oUploadFile.FileName & "): dimensione file non ammessa (max: " & imaxFileSize & " bytes)
    "
    'Exit Sub
    Else
    Files.Add counter-1, oUploadFile
    'Files.Add LCase(sInputName), oUploadFile
    End If
    Else
    Files.Add counter-1, oUploadFile
    'Files.Add LCase(sInputName), oUploadFile
    End If
    End If

    End If

    'Se le estensioni non sono filtrate carica tutti i file
    Else

    'Se il campo file del form contiene un file prosegui
    If sFileName <> "" Then

    sFileName1 = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
    dotpos = 0
    dotpos = InStrRev(sFileName1, ".")

    'Se il file ha un estensione qualsiasi può essere caricato
    If dotpos > 0 AND dotpos < Len(sFileName1) Then
    oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
    oUploadFile.FileExt = Right(sFileName1, Len(sFileName1) - dotpos)
    oUploadFile.FileNameShort = Left(sFileName1, dotpos-1)
    oUploadFile.OverWrite = bOverWrite

    sfileExt = Right(sFileName1, Len(sFileName1) - InStrRev(sFileName1, "."))

    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)

    'Se la dimensione max per il singolo file non è filtrata allora può essere caricato
    If Not IsNull(imaxFileSize) AND IsNumeric(imaxFileSize) AND imaxFileSize <> "" Then

    'Se il file supera la dimensione max ammessa per il singolo file allora genera ERRORE
    If oUploadFile.FileSize > imaxFileSize Then
    Error = True
    errorDesc = errorDesc & "File #" & counter & "(" & oUploadFile.FileName & "): dimensione file non ammessa (max: " & imaxFileSize & " bytes)
    "
    'Exit Sub
    Else
    Files.Add counter-1, oUploadFile
    'Files.Add LCase(sInputName), oUploadFile
    End If
    Else
    Files.Add counter-1, oUploadFile
    'Files.Add LCase(sInputName), oUploadFile
    End If

    'Se il file non ha estensione genera ERRORE
    Else
    Error = True
    errorDesc = errorDesc & "File #" & counter & "(" & sFileName1 & "): file senza estensione
    "
    End If

    End If

    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

    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 FileNameShort
    Public FileExt
    Public FileData
    Public OverWrite

    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

    back = ""

    If Not OverWrite Then
    i = 0

    Do While oFS.FileExists(sPath & FileNameShort & back & "." & FileExt)
    i = i + 1
    back = CStr(i)
    Loop
    End If

    Set oFile = oFS.CreateTextFile(sPath & FileNameShort & back & "." & FileExt, True)

    For nIndex = 1 to LenB(FileData)
    oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))

    Next
    oFile.Close

    Set oFS = Nothing
    End Sub

    Public Sub SaveToDatabase(ByRef oField)
    If LenB(FileData) = 0 Then Exit Sub

    If IsObject(oField) Then
    oField.AppendChunk FileData
    End If
    End Sub

    End Class
    %>


    GRAZIE IN ANTICIPO!!!
    saludos,Kosee

  2. #2
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Non conosco lo script; ma potresti più semplicemente fare così:
    codice:
    Set FSO = CreateObject("Scripting.FileSystemObject")
            if FSO.FileExists (server.mapPath("CARTELLA/" & Form("File1").FileName)) then
            Do
    			Counter = Counter + 1
    			NewFileName = Form("File1").FileName
    			NewFileName = Counter & "_" & NewFileName  
    			
    			response.write NewFileName & "
    "
    			
    			x = (server.mapPath("CARTELLA/" & Form("File1").FileName))
    			y = (server.mapPath("CARTELLA/"& NewFileName &""))
    
    			
               Loop while FSO.FileExists (server.mapPath("CARTELLA/"& NewFileName &""))
              
             
                FSO.MoveFile (server.mapPath("CARTELLA/" & Form("File1").FileName)),(server.mapPath("CARTELLA/"& NewFileName &""))
      
      set FSO = nothing
          end if
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

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.