39 messaggi dal 12 febbraio 2001
Ho preso spunto da un articolo che ci ha mandato Daniele via email ...
dove sbaglio?
<%
nomefile = request.QueryString("nomefile")
pathfile = "/cartelle1/nonmitrovi/" & nomefile
tipofile = request.QueryString("tipofile")
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary
objStream.Open
objStream.LoadFromFile Server.MapPath(pathfile)
if tipofile = "zip" then
Response.ContentType = "application/x-zip-compressed"
else
Response.ContentType = "application/executable"
end if
Response.BinaryWrite
objStream.Read
objStream.Close
Set objStream = Nothing
%>

Grazie

Alfredo Silvano

Alfredo Silvano
Scusa, ma quale e' il problema che hai riscontrato?

Saluti

Andrea Palmatè
webmaster di:
http://www.sandrotoffi.it

--
Andrea Palmatè
39 messaggi dal 12 febbraio 2001
<%
nomefile = request.QueryString("nomefile")
tipofile = request.QueryString("tipofile")
pathfile = "/nonmitrovi/" & nomefile
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary
objStream.Open
objStream.LoadFromFile Server.MapPath(pathfile)
if tipofile = "zip" then
Response.ContentType = "application/x-zip-compressed"
else 'MI DA ERRORE QUI
Response.ContentType = "application/executable"
end if
Response.BinaryWrite
objStream.Read
objStream.Close
Set objStream = Nothing
%>

Mi da questo errore

Response object error 'ASP 0156 : 80004005'

Header Error

/download.asp, line 18

The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content.

Cosa sbaglio?

Grazie

Alfredo Silvano

Alfredo Silvano
Quel problema si verifica quando tu hai già inviato al browser gli header HTTP. Le soluzione sono 2:

1) Se quel pezzo di codice si trova in un IF ti conviene mettere all'inizio della pagina l'istruzione

Response.Buffer = True

e poi inserire nel tuo codice (all'inizio), l'istruzione

Response.Clear

e dovrebbe andare bene :-)

2) Eliminare gli eventuali <HTML><HEAD> etc etc che hai inserito all'inizio della pagina se possibile.

L'errore non è nel codice che hai scritto, o meglio è lì perchè tenti di reinviare l'header http che hai già inviato. Questo si verifica anche se provi a fare un Response.Redirect su una pagina che ha qualche elemento visualizzato. Il comando:

Response.ContentType = "application/x-zip-compressed"

fa parte di quegli headers HTTP e quindi il server ASP si incavola ;-)

Saluti

Andrea Palmatè
webmaster di:
http://www.sandrotoffi.it

--
Andrea Palmatè
128 messaggi dal 06 settembre 2002
Hai inserito tutto il codice prima del tag <html>?
Deve essere:

<%
tuo codice
%>
<html>
<pagina html>
</html>

Altrimenti non saprei ... buona fortuna

39 messaggi dal 12 febbraio 2001
Innanzitutto grazie per l'aiuto a tutti ...
Ho modificato tutto il codice così:
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library"-->
<%
nomefile = request.QueryString("nomefile")
tipofile = request.QueryString("tipofile")
pathfile = "/nonmitrovi/" & nomefile
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary
objStream.Open
objStream.LoadFromFile Server.MapPath(pathfile)
if tipofile = "zip" then
Response.ContentType = "application/x-zip-compressed"
else
Response.ContentType = "application/executable"
end if
Response.BinaryWrite
objStream.Read
objStream.Close
Set objStream = Nothing
%>

e sapete cosa succede?
Se chiedo di salvare un file exe mi chiede di salvare la pagina asp! La edito e trovo all'interno questo errore:

Microsoft VBScript runtime error '800a01c2'

Wrong number of arguments or invalid property assignment: 'Response.BinaryWrite'

/download.asp, line 17

se invece chiedo di salvare un file zip, mi restituisce questo:
ADODB.Stream error '800a0bba'

File could not be opened.

/download.asp, line 10

Non ci capisco più niente.
Vi assicuro che i file sono nel percorso indicato ...

Alfredo Silvano

Alfredo Silvano
Il primo errore ti succede per il semplice fatto che il metodo BinaryWrite vuole un parametro che è poi il dato che deve scrivere. Tu non gli hai passato niente e quindi ti da' quell'errore

Per il secondo mi sembra un errore di percorso. Hai controllato con l'istruzione:

response.write(Server.Mappath(pathfile))

Il risultato per vedere se effettivamente il file lo punta correttamente?

Ciao

Andrea Palmatè
webmaster di:
http://www.sandrotoffi.it

--
Andrea Palmatè
39 messaggi dal 12 febbraio 2001
Per il secondo mi sembra un errore di percorso. Hai controllato con l'istruzione:
response.write(Server.Mappath(pathfile))
Il risultato per vedere se effettivamente il file lo punta correttamente?
Ciao
Andrea Palmatè
webmaster di:
http://www.sandrotoffi.it

Ho sistemato il primo errore ... :-) THX
ed ho anche controllato la path, forse ho capito l'errore dove sta ... potreste dirmi come faccio ad inserire un punto dentro una stringa? ... purtroppo pratico con il vbscript da un mese appena!

THX

Alfredo Silvano

Alfredo Silvano

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.