Ciao a tutti aruba mi ha fornito uno script per l'upload di immagini e vorrei modoficarne alcune parti in base alle ie esigenze. Sto facendo una specie di blog dove ogni utente può mettere la sua foto (ma solo una). Qui il mio problema. Vorrei che quando lui sceglie l'immagine dal suo hard disk e la carica quest'ultima acquisti il nome della sua sessione (se si collega l'utente pippo e carica un immagine imm.jpg, quest'ultima finisca sul server col nome pippo.jpg). Il problema che lo script è un po' complicato per me (sono un principiante!) e non riesco a trovare la parte di codice che mi permette tale azione...mi aiutate? vi posto il codice
Vi ringrazio anticipatamente!!!
Ciaoooo
Codice:
<%
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 = True
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" & "<br>"
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 = Session("username")
'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 & ")" & "<br>"
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)<br>"
'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)<br>"
'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<br>"
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
%>
Vi ringrazio anticipatamente!!!
Ciaoooo