14 messaggi dal 29 agosto 2018
Ciao a tutti. Sto creando una intranet per gestire documentazioni varie. Sto avendo problemi con il download di file che hanno dimensione >5MB. Il messaggio che mi da il browser (Google Chrome) è il seguente: Impossibile raggiungere il sito
La pagina web all'indirizzo https://www.diocesipatti.it/it/manual/intranet/admin/downloadfile.asp?file=2018/docenti/89WhatsApp_Audio_2018-08-20_at_18.40.57.mpeg&tf=7 potrebbe essere temporaneamente non disponibile oppure è stata permanentemente spostata a un nuovo indirizzo web.
ERR_INVALID_RESPONSE (Controllando nella directory in cui va a depositare il file del caricamento.. questo file è presente)


facendo la stessa procedura ma con un file <5MB tutto funziona.. Com'è possibile? Vi posto il codice che utilizzo per fare scaricare i files.

<%@LANGUAGE = VBScript%>
<% ' Recupero il file da scaricare
Dim download, files

if request("tf")=1 then ' file programmazione
files="/public/itcsantagata/programmazione/" & Request.QueryString("file")
elseif request("tf")=2 then 'file programmazione sostegno
files="/public/itcsantagata/programsostegno/" & Request.QueryString("file")
elseif request("tf")=3 then 'file progetti
files="/public/itcsantagata/progetti/" & Request.QueryString("file")
elseif request("tf")=4 then 'file dip. disciplinari
files="/public/itcsantagata/dip_disciplinari/" & Request.QueryString("file")
elseif request("tf")=5 then 'file circolari
files="/public/itcsantagata/circolari/" & Request.QueryString("file")
elseif request("tf")=6 then 'file decreti
files="/public/itcsantagata/decreti/" & Request.QueryString("file")
elseif request("tf")=7 then 'file modulistica
files="/public/itcsantagata/modulistica/" & Request.QueryString("file")
elseif request("tf")=8 then 'file verbali cons
files="/public/itcsantagata/verbcons/" & Request.QueryString("file")
elseif request("tf")=9 then 'file curriculum
files="/public/itcsantagata/curriculum/" & Request.QueryString("file")
elseif request("tf")=10 then 'file musica mp3
files="/public/itcsantagata/coro/" & Request.QueryString("file")
elseif request("tf")=11 then 'file formclero
files="/public/itcsantagata/formclero/" & Request.QueryString("file")
elseif request("tf")=12 then 'file ufficio liturgico
files="/public/itcsantagata/ufflitur/" & Request.QueryString("file")
end if

' Creo l'oggetto ADODB.Stream
Set download = Server.CreateObject("ADODB.Stream")

' Apro la connessione e carico il file
download.Type = 1
download.Open
download.LoadFromFile Server.MapPath(files)

'Aggiungo le intestazioni del tipo di file
Response.AddHeader "Content-Disposition", "attachment; filename=" & Request.QueryString("file")
Response.ContentType = "application/octet-stream"
Response.BinaryWrite download.Read

download.Close
Set download = Nothing %>


10.907 messaggi dal 09 febbraio 2002
Contributi
Ciao e benvenuto nel forum,
per il momento cerca di confermare che il problema dipenda effettivamente dai 5MB e non da altri fattori, tipo il nome del file. Infatti, questa riga non è corretta perché in "attachment; filename=" devi indicare il nome di un file e non un percorso tipo "2018/docenti/89WhatsApp...".
Response.AddHeader "Content-Disposition", "attachment; filename=" & Request.QueryString("file")
Inoltre, non hai fatto l'encoding degli slash nell'URL e ho il dubbio che anche questo possa causare problemi.
Non deve essere così:
https://www.diocesipatti.it/it/manual/intranet/admin/downloadfile.asp?file=2018/docenti/89WhatsApp_Audio_2018-08-20_at_18.40.57.mpeg&tf=7 

Ma così:
https://www.diocesipatti.it/it/manual/intranet/admin/downloadfile.asp?file=2018%2Fdocenti%2F89WhatsApp_Audio_2018-08-20_at_18.40.57.mpeg&tf=7 


Quindi, per il momento fai un test più semplice: dentro la directory /public/itcsantagata/programmazione crea un file chiamato "ciao.zip" dal peso di circa 1MB e poi prova a scaricarlo con questa richiesta.
https://www.diocesipatti.it/it/manual/intranet/admin/downloadfile.asp?file=ciao.zip&tf=1

Se funziona, sovrascrivi il file ciao.zip con uno che pesa 10MB e prova a riscaricarlo visitando lo stesso URL. Funziona?

ciao,
Moreno
Modificato da BrightSoul il 30 agosto 2018 10.14 -

Enjoy learning and just keep making
14 messaggi dal 29 agosto 2018
Provato, ma nulla, non va.. con il file piccolo tutto funziona
Modificato da samuelpa99 il 30 agosto 2018 11.11 -
14 messaggi dal 29 agosto 2018
ho notato che facendo l'encoding degli slash mi da errore..

ADODB.Stream error '800a0bba'

File could not be opened.
10.907 messaggi dal 09 febbraio 2002
Contributi

Provato, ma nulla, non va.. con il file piccolo tutto funziona

Ok, quindi abbiamo verificato che il problema è effettivamente il peso del file.
Vediamo se il server ci dà qualche indizio aggiuntivo: apri la console degli strumenti di sviluppo del browser (tasto F12) e apri la scheda "Rete" o "Network". In questa scheda vedrai passare le richieste al server e le relative risposte. Ora, dalla pagina asp, clicca il link per il download del file e vedrai apparire la richiesta in quella scheda.
Fai doppioclick sulla richiesta per vederne i dettagli. Posta qui lo status code, le header e il contenuto della risposta (se contiene informazioni utili a capire il problema, come il testo di un errore).
Lo vedi in questa immagine (Chrome):
https://www.mkyong.com/wp-content/uploads/2016/01/view-header-in-chrome.png

Io non riesco a farlo perché mi dà "File could not be opened".
L'encoding ovviamente non va fatto dentro downloadfile.asp, ma nei punti in cui componi l'url. Cioè, nella tua applicazione, da qualche parte, ci sarà una riga di codice in cui concateni i vari pezzi per comporre l'url. E' questo il punto in cui va fatto l'url encoding del percorso. Ad esempio, guarda qui come ho usato Server.URLEncode per creare l'url del link di download.
<%
Dim downloadUrl
downloadUrl = "https://www.diocesipatti.it/it/manual/intranet/admin/downloadfile.asp?file=" & Server.URLEncode(percorsoFile) & "&tf=" & tfFile
%>
<a href="<%= downloadUrl %>">Scarica il file</a>

Non bisogna fare nient'altro.

ciao,
Moreno
Modificato da BrightSoul il 30 agosto 2018 11.53 -

Enjoy learning and just keep making
14 messaggi dal 29 agosto 2018
Request URL: https://www.diocesipatti.it/it/manual/intranet/admin/downloadfile.asp?file=2018/sacerdoti/93test.zip&tf=7
Referrer Policy: no-referrer-when-downgrade
Provisional headers are shown
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
X-DevTools-Emulate-Network-Conditions-Client-Id: 659D79CA882347CB302BD5A9B94F0F93
file: 2018/sacerdoti/93test.zip
tf: 7
10.907 messaggi dal 09 febbraio 2002
Contributi
Ok, ora io vedo che il server risponde questo:
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: application/octet-stream
Server: Microsoft-IIS/8.5
Content-Disposition: attachment; filename=2018/sacerdoti/93test.zip
Set-Cookie: ASPSESSIONIDSWQSCRAR=CMKDCOBDBCODANNFENPIOIIN; secure; path=/
X-Powered-By: ASP.NET
Date: Thu, 30 Aug 2018 10:21:00 GMT
Content-Length: 428

 <font face="Arial" size=2>
<p>Response object</font> <font face="Arial" size=2>error 'ASP 0251 : 80004005'</font>
<p>
<font face="Arial" size=2>Response Buffer Limit Exceeded</font>
<p>
<font face="Arial" size=2>/it/manual/intranet/admin/downloadfile.asp</font><font face="Arial" size=2>, line 44</font>
<p>
<font face="Arial" size=2>Execution of the ASP page caused the Response Buffer to exceed its configured limit.
</font> 


Quindi bisogna trovare una soluzione all'errore "Response Buffer Limit Exceeded".
Qui c'è una pagina che riporta delle soluzioni (nel tuo caso sono rilevanti la 3 e la 4).
https://support.microsoft.com/it-it/help/925764/error-message-when-a-web-browser-sends-a-request-for-an-active-server

Tra quelle, per il momento proverei ad usare questa:
<%
'Metti questo verso la parte alta del file downloadfile.asp
Response.Buffer = false
%>


Ricordati di sistemare l'intestazione Content-Disposition perché così è sbagliata.
Content-Disposition: attachment; filename=2018/sacerdoti/93test.zip

Ci va solo il nomefile, cioè 93test.zip

ciao,
Moreno

Enjoy learning and just keep making
14 messaggi dal 29 agosto 2018
Ok ho fatto quello che hai detto.. ma se lascio soltanto il nome del file il problema è che non lo trova nella directory.. tanto che adesso da un altro errore:

Server.MapPath() error 'ASP 0171 : 80004005'

Missing Path

/it/manual/intranet/admin/downloadfile.asp, line 43

The Path parameter must be specified for the MapPath method.

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.