3.939 messaggi dal 28 gennaio 2003
In una pagina aspx, al click di un pulsante, eseguo queste operazioni:
1) comprimo tutti i files di una data directory in un vettore di byte
2) eseguo il download di questi dati con un certo nome, dati.zip, tipo attachment

Il tutto funziona perfettamente.


ora, prendo questo codice e, in un altro server, creo un IHttpHandler che mi restituisce il file dati.zip.
In locale creo una pagina che, mi legge da remoto dati.zip e mi fa il download.

E anche qui funziona tutto perfettamente.

Adesso il problema.
L'IHttpHandler lo creo pure in locale e la pagina di test va a leggere i dati non dal server remoto, ma da locale, con le stesse procedure di prima, e fa il download.
Qui vedo alcune cose strane, per esempio, il nome del download restituito, è -dati.zip- per IE e Pagina.aspx per firefox.
Se vado in debug non funziona proprio: dice che non si possono inviare le intestazioni più volte??? o qualcosa di simile
Cosa potrei controllare?

Ciao

ps. sto lavorando con Windows 7 32bit.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
hai provato ad esaminare il contenuto della risposta usando Fiddler? Magari compare dell'output inatteso che ti potrebbe far capire qual è la causa del problema.

pietro09 ha scritto:

il nome del download restituito, è -dati.zip- per IE e Pagina.aspx per firefox.

Mah, non è che per caso facendo copia-incolla, i doppi apici che normalmente si trovano attorno al filename sono stati sostituiti da questi, che sono invece dei caratteri unicode non riconosciuti come qualificatori di stringa?
Questo spiegherebbe perché sono stati sostituiti dal trattino, che è un carattere ascii.

pietro09 ha scritto:

Se vado in debug non funziona proprio: dice che non si possono inviare le intestazioni più volte???

Forse ti riferisci all'errore che si verifica quando provi a valorizzare delle intestazioni HTTP quando ormai il contenuto della risposta è stato già inviato al client.
Non so, deve esserci qualcosa che sta scrivendo nella Response prematuramente. Vedi se con Fiddler riesci a capire di che si tratta. Vai ad esaminare il contenuto grezzo della risposta.

ciao,
Moreno
Modificato da BrightSoul il 06 settembre 2014 09.39 -

Enjoy learning and just keep making
3.939 messaggi dal 28 gennaio 2003
Seguirò i tuoi consigli.
Ciao.
3.939 messaggi dal 28 gennaio 2003
ma lo sai che avevi ragione?
Il nome del file era contornato dai doppi apici
Adesso va
3.939 messaggi dal 28 gennaio 2003
qualche spiegazione.

Io chiedo ad un handler dei files zippati.
Questo handler restituisce i dati con un nome.

Adesso, una pagina aspx recupera questo zip, per poi fare il download.

Ho scelto di non dare un nome a questi dati, ma di prendere quello restituito dall'handler.

Avevo osservato col debug, a suo tempo, che viene restituita una stringa tipo:

'response.Headers(0) = "attachment; filename=documenti.zip"

da cui il codice
fileName = response.Headers(0).Split(";"c)(1).Split("="c)(1)

grazie alla tua osservazione, ho aggiunto
fileName = fileName.Trim(""""c)

comunque, grazie ancora
ciao
3.939 messaggi dal 28 gennaio 2003
certo che la cosa è divertente

Il codice lo avevo collaudato tempo fa e funzionava.

La differenza è che, mentre prima facevo la richiesta al server usando un <asp:LinkButton, adesso faccio la richiesta al server tramite javascript; faccio il submit verso un iframe nascosto.


E questo basta a non farlo funzionare come prima.

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.