28 messaggi dal 20 febbraio 2001
..salve a tutti....prima di tutto...:-)

....e' possibile effetuare il downlaod di un file via Web, senza che il file medesimo sia nel Web Server...???

Ho già visto l'utilissimo script che permette il download forzato (quello che utilizza la lettura del file in binario e la sua riconversione in stringa)...ma non riesco ad evitare che funzioni se e solo se utilizzando Server.MapPath, faccia il download di un file presente nel mio web server..

..ho provato con path assoluti, tipo http:nomeserver/path/nomefile o \\nomeserver\path\nomefile....ma ricevo in risposta un file così scritto...

<font face="Arial" size=2>
<p>Server object</font> <font face="Arial" size=2>error 'ASP 0177 : 800a0034'</font>
<p>
<font face="Arial" size=2>Server.CreateObject Failed</font>
<p>
<font face="Arial" size=2>/voyager3/asp/prova2.asp</font><font face="Arial" size=2>, line 35</font>
<p>
<font face="Arial" size=2>The operation completed successfully.

...ecco il codice....(ricevo il nome del file ed il path assoluto da una altra pagina asp, avendo anche l'accortezza di utilizzare server.URLEncode per il passaggio delle variabili....


<%
Response.Expires = 0
Response.Buffer = True

NomeFile=Request.QueryString("NomeFile")
PathCompleto=Request.QueryString("PathCompleto")



%>


<%
Function StringToBinary(String)
Dim I, B
For I=1 to len(String)
B = B & ChrB(Asc(Mid(String,I,1)))
Next
StringToBinary = B
End Function

%>

<%

server.ScriptTimeout = 16200
response.buffer = true
response.contentType = "application/octet-stream"
' Aggiunge un header per far scaricare il file
response.AddHeader "content-disposition", "attachment; filename=" & NomeFile

set fs = Server.CreateObject ("Scripting.FileSystemObject")

'set binfile = fs.OpenTextFile(server.mappath(".\" & PathCompleto))
set binfile = fs.OpenTextFile(PathCompleto)

'fileSize = fs.getFile(server.mappath(".\" & PathCompleto)).size
fileSize = fs.getFile(PathCompleto).size

for i = 1 to fileSize
if not Response.IsClientConnected then
binfile.close
set binfile = Nothing
response.clear
response.end
end if
response.binarywrite StringToBinary(binfile.read(1024*16))
response.flush
next

binfile.close
set binfile = Nothing
set fs = nothing
%>

..grazie fin d'ora per chi potrà aiutarmi...

Wintersea


181 messaggi dal 06 luglio 2001
Quello che vuoi fare e' impossibile.

L'oggetto filesystem (come dice il nome) legge i file dal filesystem della macchina su cui risiede il sito (ovvero il server).

Non puoi usarlo per leggere un file remoto.

Ciao
Baxeico

-- Sciusciá e sciurbí nu se pö --
28 messaggi dal 20 febbraio 2001
...nemmeno reimpostando in qualche modo la directory corrente ?

Quello che tentavo di fare è di fare il download di file presenti comunque nella rete o comunque raggiungibili....e che sono comunque anch'essi dei Web Server....


Wintersea

P.S.: Grazie per la risposta....


Modificato da wintersea il 25 ottobre 2002 10.02 -
635 messaggi dal 06 settembre 2002
Ciao, forse mi sfugge qualcosa, tuttavia, una volta che hai il path assoluto del file, basta ricorrere al link diretto del file (es. <a href="www.prova.it/download/file.pdf">manuale di asp</a> ) e il file in questione verrà scaricato (o aperto) dall'utente.

Spero di essere stato di aiuto

OJD
28 messaggi dal 20 febbraio 2001
...grazie della risposta..innanzitutto!!

Hai ragione....quella è proprio la mia carta di riserva...che vorrei pero' non utilizzare perchè i file in questione potrebbero essere molto grandi e perchè vorrei lascaire all'utente la possibilità di scaricare il file od aprirlo...

Wintersea
635 messaggi dal 06 settembre 2002
Ciao,
con <a href.... </a> se l'utente non clicca sul link, il file non viene scaricato......

Ciao.

OJD
28 messaggi dal 20 febbraio 2001
Certo !

Il problema è che vorrei dare all'utente, una volta cliccato la possibilità di aprire il documento o fare il download....così come proposto da una comune finestra di download...

..tra l'altro, come ho già detto, questi file possono essere molto grandi

Wintersea
181 messaggi dal 06 luglio 2001
Come ti dicevo, non puoi usare l'oggetto filesystem per accedere ad un file remoto.
Questo perche' tale oggetto lavora a livello di server (legge, scrive ecc... file sul tuo server).
Se un file risiede su un altro server, come fa l'oggetto filesystem che risiede sul tuo server a raggiungere il file presente sul server remoto?
Per raggiungere un file su di un server remoto bisogna fargli una richiesta, l'oggetto filesystem questa richiesta non la fa, lavora "in locale".

Come diceva giustamente ojd puoi raggiungere un file con un banale link, perche' in quel caso e' il browser che fa una richiesta al server dove risiede il file.
E' vero che in questo modo non puoi sapere se il file verra' scaricato o aperto dall'apposito programma.

Un idea che mi viene, ma del tutto campata in aria e da verificare e' quella di raggiungere il file remoto con l'oggetto XMLHTTP e poi gestire in qualche modo la risposta del server.
Qualcuno sa se potrebbe funzionare?

Ciao
Baxeico

-- Sciusciá e sciurbí nu se pö --

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.