visual txt texto robots por net lineas linea leer google example escribir ejemplo crear asp archivos archivo agregar .net vb.net download text-files

txt - ¿Cuál es la mejor manera de generar un archivo de texto en un sitio web.net?



robots.txt example (4)

La respuesta dependerá de si, como lo menciona Forgotten Semicolon, necesita descargas repetidas o desechables de una sola vez.

De cualquier forma, la clave será establecer el tipo de contenido de la salida para garantizar que se muestre una ventana de descarga. El problema con la salida de texto directo es que el navegador intentará mostrar los datos en su propia ventana.

La forma principal de establecer el tipo de contenido sería algo similar a lo siguiente, suponiendo que el texto es la cadena de salida y el nombre del archivo es el nombre predeterminado con el que desea que el archivo se guarde (localmente) como.

HttpResponse response = HttpContext.Current.Response; response.Clear(); response.ContentType = "application/octet-stream"; response.Charset = ""; response.AddHeader("Content-Disposition", String.Format("attachment; filename=/"{0}/"", filename)); response.Flush(); response.Write(text); response.End();

Esto provocará una descarga para el usuario.

Ahora es más complicado si necesitas guardar literalmente el archivo en tu servidor web, pero no demasiado. Allí le gustaría escribir el texto en su archivo de texto usando las clases en System.IO. Asegúrese de que el servicio de red, el nombre IUSR_MachineName y los usuarios de ASPNET Windows puedan escribir en la ruta en la que escribe. De lo contrario, el mismo trato: use el tipo de contenido y los encabezados para garantizar la descarga.

Recomiendo no guardar literalmente el archivo a menos que lo necesite, e incluso entonces, la técnica de hacerlo directamente en el servidor puede no ser la idea correcta. (Por ejemplo, ¿qué pasa si necesita control de acceso para descargar dicho archivo? Ahora tendría que hacer eso fuera de la raíz de la aplicación, que puede o no ser posible, dependiendo de su entorno de alojamiento).

Por lo tanto, sin saber si está en un modo único o en el que el archivo realmente debe guardarse, y sin conocer las implicaciones de seguridad (que probablemente necesitará resolver usted mismo si realmente necesita guardar el servidor), eso es todo. lo mejor que puedo darte

Tengo una página en mi aplicación web vb.net que necesita arrojar un montón de datos en un archivo de texto y luego presentarlo al usuario para su descarga. ¿Cuál es la mejor / la forma más eficiente de crear un archivo de texto de este tipo en un servidor web .net?

Editar: para responder a una pregunta a continuación, este será un tipo de archivo de descarga una vez y luego descartable.

Actualización: Pegué las sugerencias de John Rudy y DavidK, y funcionó a la perfección. ¡Gracias a todos!


No lo construya en absoluto, use un HttpHandler y sirva el archivo de texto directamente en el flujo de salida:

http://digitalcolony.com/labels/HttpHandler.aspx

El bloque de código a mitad de camino es un buen ejemplo, puede ajustarse al suyo:

public void ProcessRequest(HttpContext context) { response = context.Response; response.ContentType = "text/xml"; using (TextWriter textWriter = new StreamWriter(response.OutputStream, System.Text.Encoding.UTF8)) { XmlTextWriter writer = new XmlTextWriter(textWriter); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement("urlset"); writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); writer.WriteAttributeString("xsi:schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"); writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"); // Add Home Page writer.WriteStartElement("url"); writer.WriteElementString("loc", "http://example.com"); writer.WriteElementString("changefreq", "daily"); writer.WriteEndElement(); // url // Add code Loop here for page nodes /* { writer.WriteStartElement("url"); writer.WriteElementString("loc", url); writer.WriteElementString("changefreq", "monthly"); writer.WriteEndElement(); // url } */ writer.WriteEndElement(); // urlset } }


Tenga en cuenta que nunca necesita ser un ''archivo'' en el servidor. Es el cliente el que lo convierte en un archivo.


Use un StringBuilder para crear el texto del archivo y luego envíelo al usuario utilizando Content-Disposition.

Ejemplo encontrado aquí: http://www.eggheadcafe.com/community/aspnet/17/76432/use-the-contentdispositi.aspx

private void Button1_Click(object sender, System.EventArgs e) { StringBuilder output = new StringBuilder; //populate output with the string content String fileName = "textfile.txt"; Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName); Response.WriteFile(output.ToString()); }