Acontece que durante o desenvolvimento do nosso projeto (os arquivos são armazenados no banco de dados), os arquivos baixados são gravados na forma de cabeçalhos http. Como segue Response.Clear();
Resposta.Buffer = falso;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite(fluxo de bytes);
Response.End();
Porém, após a implantação do projeto, quando o usuário navegar no IE6.0, ele será interceptado, fechado e encerrado. Naquela época, meu colega usava um formulário pop-up, e depois “clicava para baixar” no formulário pop-up, para que não fosse interceptado.
Tentei uma solução mais direta, que é primeiro gerar um arquivo temporário ao clicar, e depois vincular ao arquivo temporário, ou seja, aparecerá um download de arquivo ou uma caixa de diálogo aberta. O código é muito simples:
string fileName = "file name" //use file id
string tempFilePath = Request.PhysicalPath;
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\"));
tempFilePath += " \temp\ " + nomeArquivo;
Arquivo FileStream = novo FileStream(tempFilePath,FileMode.OpenOrCreate,FileAccess.ReadWrite)
;
{
byte[] docBody = (byte[])fileWJNR.Rows[0]["WJNR"];
arquivo.Write(docBody, 0, docBody.Length);
arquivo.Fechar();
Response.Redirect("temp\" + nomeArquivo);
}
pegar
{
arquivo.Fechar();
}