Pregunta

Me gustaría responder a una solicitud http con un archivo txt y una página html. De esta manera, el cliente puede guardar el archivo y ver un resumen del contenido de ese archivo a través de una página html.

Dado que el archivo se genera sobre la marcha, tengo que usar la administración de estado en el servidor para generar el resumen en la segunda solicitud. Me gustaría evitar esto y resumirlo en una sola respuesta.

¿Cómo se vería el ActionResult personalizado?

¿Fue útil?

Solución

Esto fue también discutido aquí en SO .

lo respondí así:

  

No, archivos adjuntos multiparte para   descarga (como en el correo electrónico) no   compatible por razones de seguridad. Sus   llamado una descarga "drive-by".

     

Tenga en cuenta que Gmail maneja esto mediante   comprimiendo dinámicamente los archivos. usted   debería también    http://forums.asp.net/t/1240811.aspx

No creo que ningún navegador moderno admita multiparte / mixto.

Otros consejos

Puede enviar XML con referencia a una hoja de estilo XSLT. El navegador puede realizar la transformación y mostrar una salida HTML resultante.

Y el usuario puede simplemente hacer " Archivo- > Guardar como ... " para almacenar el archivo XML.

¿Por qué no presentar el resumen como Vista HTML normal y proporcionar un enlace debajo de ese resumen que apunta a un ActionResult separado que devuelve datos binarios ...

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

Hice una búsqueda sobre este tema y para mi sorpresa, parece que la gente ya lo hizo. Encontré una descripción aquí , pero no proporciona un público prueba URI, por lo que no pude probar el comportamiento del navegador en esto. También menciona la solución para enviar un archivo al cliente. Pero supongo que eso no es lo que estás buscando, ¿verdad?

Aquí hay otro artículo que muestra un ejemplo con multiparte respuestas Lamentablemente, el URI de demostración parece que ya no funciona.

Entonces, la situación es la siguiente: se pueden hacer respuestas de múltiples partes HTTP. Hay bibliotecas cliente (pocas) para manejar aquellas en el código de la aplicación. Se debe probar el comportamiento del navegador ( Aquí hay una voz ). El uso de esta función parece experimental y puede recomendarse solo usted puede controlar ambos extremos de la comunicación para eliminar problemas de interoperabilidad.

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