18 messaggi dal 14 ottobre 2002
Utilizzo per gli upload sul server questo script:

------------------------------------------------------------
<!--#include file="./class_upload.asp" -->
<%
'upload
Dim Uploader, File
Set Uploader = New FileUploader
'Dimensione massima in byte
Uploader.maxSize = 5000000
'Estensioni ammesse
Uploader.fileExt = "doc,pdf,zip"
'Avvio del processo di upload
Uploader.Upload()
' percorso
strPath = Server.MapPath("../cartella1/cartella2") & "\"
'Controlliamo se sono stati inviati dei file
If Uploader.Files.Count = 0 Then
messaggio = "Errore : nessun file inviato !!"
controllo_upload = false
end if
If Uploader.Error Then
messaggio = Uploader.ErrorDesc & " !!"
controllo_upload = false
else
controllo_upload = true
'Ciclo tra i file inviati
For Each File In Uploader.Files.Items
'Salvo il file
File.SaveToDisk strPath
nome_file = File.FileName
tipo_file = File.ContentType
dime_file = File.Size
messaggio = "Nome del file : " & nome_file & "<br>"
messaggio = messaggio & "Tipo : " & tipo_file & "<br>"
messaggio = messaggio & "Dimesioni : " & dime_file & "<br>"
'Mostriamo i dettagli dei file salvati
next
end if
%>
<%=messaggio%>
--------------------------------------------

mentre il file incluso (class_upload.asp) è:


--------------------------------------------
<%
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 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'estenzione 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
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 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 If
End Sub

End Class
%>




-----------------------------
L'errore che ottengo è :
-------------------------------------
Errore di compilazione di Microsoft VBScript error '800a03ea'

Errore di sintassi

/class_upload.asp, line 2

Class FileUploader
^

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.