Sono all'ultima spiaggia...
ho sempre usato lo script che ora vi posto... ha sempre funzionato da anni. Ora è da mesi che non riesco a farlo funzionare.
La cosa strana è che al primo invio dal form html mi da errore:
-------------------------------------------------------------------------
Tipo di errore:
Errore di run-time di Microsoft VBScript (0x800A0005)
Chiamata di routine o argomento non validi
-------------------------------------------------------------------------
poi se torno indietro con le frecce back del browser (ie 6) riclicco su sfoglia, riprendo lo stesso file, ripremo Invia e il file si carica.
A volte però funziona al primo colpo. Il tutto dallo stesso pc in locale su iis6.
Ho notato che quando mi da l'errore, nella cartella predisposta a ricevere il file è presente il file ma NON totale. cioè vengono caricati circa 300kb e poi si blocca. Con la seconda "spinta" quindi lo carica tutto il file.
Non so più cosa devo fare. Non ho Norton, ho Avast. Già provato a disattivarlo.
Ecco lo script:
-------------------------------------------------------------------------
<%
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'impostazioni variabili
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
'individua il tipo di file che si cerca di fare l upload
contentType = UploadRequest.Item("file").Item("ContentType")
'intero percorso del file
filepathname = UploadRequest.Item("file").Item("FileName")
'****************************** CONTROLLI IMMAGINE
'controllo tipo immagine
tipo = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"."))
'cambiare la scrita zip e gz qui sotto per inserire la sigla di un altro tipo di file
'Se si vuole permettere l'upload di qualsiasi tipo di file cancellare o commentare
'le successive 4 linee di codice e l'ultimo END IF della pagina upload.asp
If tipo <> "jpg" AND tipo <> "gif" then
Response.Write ("Errore Upload. Non è possibile fare upload di un file ." & tipo)
Response.End
else
' calcolo del peso della immagine
'imposta qui, il peso max. 10000 vuol dire 10 Kb circa
If byteCount > 1000000 THEN
Response.Write ("Errore Upload. File troppo grande!")
Response.End
else
'*********************************** NOME FINALE DEL FILE e UPLOAD
nomefile = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
'in questa variabile viene salvato il nome del file che sarà del tipo 2311235.gif
filename = nomefile
value = UploadRequest.Item("file").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
'da questa riga di codice si specifica l'indirizzo relativo dove sarà inserito il file
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("..\images\quadri") & "\" & filename)
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
End If
End If
strSql ="SELECT Max(id_prodotto) AS max_id_prodotto FROM prodotti;"
Call prendiRecordset()
id_prodotto = TRIM(objRs("max_id_prodotto"))
strSql ="UPDATE prodotti SET dipinto = '"+filename+"' WHERE id_prodotto = " & id_prodotto & ";"
Call prendiRecordset()
response.write strSql
Response.Redirect("visualizza-prodotti.asp")
'---------------------------------------------------
'********************** NON MODIFICARE
'è il cuore dello script
'senza questo file non viene effettuato l upload
Public Sub BuildUploadRequest(RequestBin)
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
If PosFile<>0 AND (PosFile<PosBound) Then
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
UploadControl.Add "Value" , Value
UploadRequest.Add name, UploadControl
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
'---------------------------------------------------
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
'---------------------------------------------------
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
'---------------------------------------------------
%>
-------------------------------------------------------------------------
Grazie in anticipo