Domanda

Spero che questa sia una domanda veloce spero. Ho bisogno di scrivere alcuni rapporti e quindi avere l'utente richiesto di salvare al suo / la sua macchina locale. L'ultima volta che ho fatto questo ho scritto un file al server web e poi inviato al cliente via Response oggetto.

per creare sul server web

            TextWriter tw = new StreamWriter(filePath);

da inviare al cliente

           page.Response.WriteFile(path);

La domanda è: C'è un modo per saltare la scrittura del file fisico per il server web e andare a destra da un oggetto che rappresenta il documento alla risposta?

È stato utile?

Soluzione

È possibile utilizzare il Response.ContentType come questo

Response.ContentType = "text/plain";
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.AddHeader("Content-Disposition", "attachment;filename=yourfile.txt");

Questo ovviamente funziona se si vuole scrivere un file di testo. Nel caso in cui si desidera scrivere un doc ad esempio si modifica il ContentType a "application / pdf", ecc ...

Altri suggerimenti

È possibile.

Prova questo:

Table oTable = new Table();
//Add data to table.

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename="test.xls"");
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.Html32TextWriter oHtmlTextWriter = new System.Web.UI.Html32TextWriter(oStringWriter);
0Table.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();

Questo darà richiedono all'utente di aprire o salvare il file test.xls. Allo stesso modo è possibile fornire altri oggetti ASP.NET al posto della tabella.

Sì.

page.Response.WriteFile(yourData, 0, yourData.Length);

La risposta esatta alla domanda dipende da come si fa a avere il vostro rapporto organizzata (vale a dire quello che è il "oggetto" si sta riferendo). Se si dispone di una singola stringa, è possibile utilizzare Response.Write per basta scrivere. Se avete bisogno di un TextWriter, Response.Output è ciò che si vuole - in questo modo si può saltare la scrittura sul disco e quindi utilizzando WriteFile. Inoltre, se il contenuto è accaduto di essere binario, si potrebbe usare Response.OutputStream per questo.

Si consiglia inoltre di impostare Response.AddHeader ( "Content-Disposition", "allegato"), se si desidera che l'utente per vedere una finestra di dialogo file di salvataggio. Tuttavia, Content-Disposition non è necessariamente onorata, quindi l'utente può ancora ottenere il rapporto aperto direttamente nel browser. Ricordate di impostare le intestazioni prima di emettere il contenuto effettivo!

Inoltre, a seconda del formato del report, si consiglia di impostare Response.ContentType a qualcosa di appropriato come text / plain, text / csv o qualsiasi altra cosa che hai. I tipi MIME corretto sono elencati sito IANA .

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