79 messaggi dal 06 aprile 2004
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
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Sono sempre stato contrario all'uso di quello script per asp per l'upload, affidabile solo con file di pochi KB. Non hai proprio possibilità di usare un oggetto COM apposito?

Ciao
.
andrewz ha scritto:
Sono sempre stato contrario all'uso di quello script per asp per l'upload, affidabile solo con file di pochi KB.

Con questo: ASP Upload all'epoca (un po' di anni fa) uploadavo tranquillamente file da diversi mega (i limiti erano di IIS, non dello script; ma da quelli non scappi nemmeno con .NET  )
HTH

Matteo Casati
GURU4.net
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
m.casati wrote:
Con questo: ASP Upload http://www.guru4.net/articoli/asp-upload/ all'epoca (un po' di anni fa) uploadavo tranquillamente file da diversi mega (i limiti erano di IIS, non dello script

Pazzo
Se non puoi installare componenti COM non hai molte alternative. E cmq, se ci pensi bene, alla fine anche quello script usa COM: ADODB.Recordset, FileSystemObject...

Matteo Casati
GURU4.net
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Infatti, lo usavo anche io

Ma poi ho preferito sempre oggetti COM appositi che, per fortuna, anche in hosting, si trovano installati

Ciao
.
79 messaggi dal 06 aprile 2004
Eccomi tornato dalle ferie e pronto ad affrontare il problema.

Un grazie a chi mi ha risp, puroppo l'hosting è register e non mi lascia installare componenti per l'upload... devo farmelo in casa quindi :-)

Ho trovato un'anomalia in questa riga di codice:

Se lascio quella dello script originale funiona
----------------------------------------------------------------------------
Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd) & filename)
----------------------------------------------------------------------------

Se invece la modifico in questo modo per dargli un percorso al file da salvare inizia ad andare a scatti come descrito nel mio primo post:
----------------------------------------------------------------------------
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("../../images/quadri")&"\"&filename)
----------------------------------------------------------------------------

vedete qualche errore nella riga?
79 messaggi dal 06 aprile 2004
niente da fare...

al primo upload mi scrive il file da peso di pochi byte, poi risfoglio e rimando lo stesso file e mi carica tutti i kb che mancavano e così poi funziona. Poi ricarico un altro file e funziona al primo colpo.

Perchè la prima volta mi carica pochi byte e poi si ferma?

Qualcuno sa aiutarmi?

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.