C # Asp.net archivo para escribir cliente
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?
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 .