Pergunta

Qual a melhor forma de implementar, a partir de uma página web, uma ação de download usando asp.net 2.0?

Os arquivos de log de uma ação são criados em um diretório chamado [Raiz do Aplicativo]/Logs.Eu tenho o caminho completo e quero fornecer um botão que, quando clicado, fará o download do arquivo de log do servidor IIS para o PC local do usuário.

Foi útil?

Solução

Isso ajuda:

http://www.west-wind.com/weblog/posts/76293.aspx

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt");
Response.TransmitFile( Server.MapPath("~/logfile.txt") );
Response.End();

Response.TransmitFile é a forma aceita de enviar arquivos grandes, em vez de Response.WriteFile.

Outras dicas

http://forums.asp.net/p/1481083/3457332.aspx

string filename = @"Specify the file path in the server over here....";
FileInfo fileInfo = new FileInfo(filename);

if (fileInfo.Exists)
{
   Response.Clear();
   Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
   Response.AddHeader("Content-Length", fileInfo.Length.ToString());
   Response.ContentType = "application/octet-stream";
   Response.Flush();
   Response.TransmitFile(fileInfo.FullName);
   Response.End();
}


Atualizar:

O código inicial

Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);

tem "inline; anexo", ou seja,dois valores para Disposição de Conteúdo.

Não sei quando exatamente começou, mas no Firefox apenas o nome correto do arquivo não estava aparecendo.A caixa de download do arquivo aparece com o nome da página da web e sua extensão (nome da página.aspx).Após o download, se você renomeá-lo de volta ao nome real;arquivo é aberto com sucesso.

Conforme esta página, ele opera em Base de ordem de chegada.Alterando o valor para attachment apenas resolveu o problema.

PS:Não tenho certeza se esta é a melhor prática, mas o problema foi resolvido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top