Domanda

Vorrei rispondere a una richiesta http con un file txt e una pagina html. In questo modo il client può salvare il file e vedere un riepilogo del contenuto di quel file tramite una pagina html.

Poiché il file viene generato al volo, devo utilizzare la gestione dello stato sul server per generare il riepilogo sulla seconda richiesta. Vorrei evitarlo e riassumerlo in un'unica risposta.

Che aspetto avrebbe ActionResult personalizzato?

È stato utile?

Soluzione

Questo era anche discusso qui su SO .

ho risposto in questo modo:

  

No, allegati multipart per   il download (come nell'e-mail) non lo è   supportato per motivi di sicurezza. Suo   chiamato "download drive-by". "

     

Nota che Gmail lo gestisce   zippare dinamicamente i file. tu   dovrebbe anche.    http://forums.asp.net/t/1240811.aspx

Non credo che nessun browser moderno supporti multipart / mixed.

Altri suggerimenti

È possibile inviare XML con riferimento a un foglio di stile XSLT. Il browser può eseguire la trasformazione e visualizzare un output HTML risultante.

E l'utente può semplicemente fare " File- > Salva come ... " per memorizzare il file XML.

Perché non eseguire il rendering del riepilogo come normale visualizzazione HTML e fornire un collegamento in tale riepilogo che punti a un ActionResult separato che restituisce dati binari ...

public ActionResult SendFile(int id)
    {
        File file = FileRepository.GetFile(id);
        byte[] fileData = file.FileData.ToArray();
        return File(fileData, file.FileMimeType, file.FileName);
    }

Ho fatto qualche ricerca su questo argomento e con mia sorpresa, sembra che la gente lo abbia già fatto. Ho trovato una descrizione qui , ma non fornisce un pubblico testare l'URI, quindi non ho potuto testare il comportamento del browser su questo. Indica anche la soluzione per inviare un file di archivio al client. Ma suppongo che non sia quello che stai cercando, giusto?

Qui è un altro articolo che mostra un esempio con multipart risposte. Purtroppo, l'URI demo sembra non funzionare più.

Quindi la situazione è questa: è possibile eseguire risposte multipart HTTP. Esistono librerie client (poche) per gestirle nel codice dell'applicazione. Il comportamento del browser deve essere testato ( Ecco una voce ). L'uso di questa funzione sembra sperimentale e può essere consigliato solo se puoi controllare entrambe le estremità della comunicazione per eliminare i problemi di interoperabilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top