Pergunta

Eu tenho documento do word que está abrindo perfeitamente no servidor, mas quando eu baixá-lo usando o evento click do botão do meu site fica currept.eu estou usando o código abaixo no botão clique para fazer o documento de transferência.por favor, ajudar a resolver este problema:eu estou 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"));
Foi útil?

Solução

Ok bem, aqui está o código que eu uso, é vb, mas facilmente convertidos ;)

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

Isso funciona para PDF e pela mudança .ContentType para o Excel cospe isso também..Então, eu suponho que isso vai levar qualquer tipo de MIME.Boa sorte!

Eu levo o meu documento em pdf chamado MergedFile e convertê-lo para um byte(), eu dou um "ShortName", que pode ser inserido pelo usuário.Comprimento de conteúdo é muito importante..

Outras dicas

Você tem um Response.End() depois que o código que você postou?Se não, você vai ter extra "html" código do arquivo aspx adicionado ao transmitidos de arquivo, assim, corrompendo-a.

EDITAR
Como Akshay Anand mencionado, uma forma melhor seria chamar HttpContext.Current.ApplicationInstance.CompleteRequest(); em vez de Response.End() ver docs.Veja também esta pergunta.

Em vez disso, tente:

Response.ContentType ="application/msword";

Eu não uso o Word, mas para o Excel que eu uso:

Response.ContentType = "application/x-msexcel"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top