Pregunta

Espero que esto es una pregunta rápida espero. Tengo que escribir algunos informes y luego tener el usuario se le pide que lo guarde en su / su máquina local. La última vez que lo hice me escribió un archivo en el servidor web y luego lo envió al cliente a través de Response objeto.

para crear en el servidor web

            TextWriter tw = new StreamWriter(filePath);

para enviar al cliente

           page.Response.WriteFile(path);

La pregunta es, ¿Hay una manera de saltarse la escritura del archivo físico al servidor web y vaya a la derecha de un objeto que representa el documento con la respuesta?

¿Fue útil?

Solución

Se puede utilizar el Response.ContentType como esto

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

Por supuesto, esto funciona si desea escribir un archivo de texto. En caso de que quiera escribir un .doc, por ejemplo, se cambia el ContentType a "application / msword", etc ...

Otros consejos

Puede.

Prueba esto:

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();

Esto dará pronta al usuario abrir o guardar el archivo test.xls. Del mismo modo se puede proporcionar otros objetos ASP.NET en lugar de la tabla.

Sí.

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

La respuesta exacta a la pregunta depende de cómo se haya organizado su informe (es decir, ¿cuál es el "objeto" se está refiriendo a). Si usted tiene una sola cadena, puede utilizar Response.Write a solo escribirlo. Si necesita un TextWriter, Response.Output es lo que quiere - de esa manera se puede saltar escribir en el disco y luego usando escritura de archivo. Además, si su contenido ha pasado a ser binarios, se puede usar Response.OutputStream para eso.

También puede configurar Response.AddHeader ( "Content-Disposition", "unión"), si desea que el usuario vea un cuadro de diálogo guardar archivo. Sin embargo, Content-Disposition no es necesariamente un honor, por lo que el usuario todavía puede obtener el informe de abrir directamente en el navegador. Recuerde que debe establecer cabeceras antes de la salida del contenido real!

Además, dependiendo del formato del informe, es posible que desee establecer Response.ContentType a algo apropiado, tal como text / plain, texto / csv o lo que sea. Los tipos MIME correctos se indican en la IANA sitio .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top