Pregunta

Tengo un documento de Word que se abre perfectamente en el servidor, pero cuando lo descargo usando el evento de clic en un botón de mi sitio web, se actualiza.Estoy usando el siguiente código al hacer clic en el botón para realizar la descarga del documento.por favor ayuda a resolver este problema:Estoy usando .net framework 3.5

 Response.Clear();
 Response.AddHeader("Content-Disposition", "attachment; filename=StandardLetter" + _responseId.ToString() + ".doc");
 Response.ContentType = "application/octet-stream";

 Response.TransmitFile (Server.MapPath("~/document/letter/StandardLetter" + _responseId.ToString() + ".doc"));
¿Fue útil?

Solución

OK Bueno, aquí está el código que utilizo, es VB pero se convierte fácilmente;)

 Response.ContentType = "application/pdf"
        Dim byteArray As Byte() = File.ReadAllBytes(MergedFile)

        Response.AddHeader("Content-Disposition", "attachment;filename=""" & ShortFilename & """")
        Response.AddHeader("Content-Length", byteArray.Length)
        Response.BinaryWrite(byteArray)
        Response.Flush()
        Response.End()

Esto funciona para PDF y cambiando .ContentType a Excel Espuja eso también. Así que asumo que esto tomará cualquier tipo de MIME.Buena suerte!

Tomo mi documento PDF llamado MergedFile y convertirlo en un byte (), le doy un 'ShortName' que el usuario puede ser ingresado.La longitud del contenido es muy importante ..

Otros consejos

Tienes un Response.End() ¿Después de ese código que publicaste?De lo contrario, obtendrá un código "html" adicional del archivo aspx agregado al archivo transmitido, corrompiéndolo así.

EDITAR
Como mencionó Akshay Anand, una mejor manera sería llamar HttpContext.Current.ApplicationInstance.CompleteRequest(); en lugar de Response.End() ver documentos.Ver también esta pregunta.

en lugar de intentar:

Response.ContentType ="application/msword";

No uso la palabra, pero para Excel i use:

Response.ContentType = "application/x-msexcel"

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