de diálogo de download de arquivo desaparece IE7
-
05-07-2019 - |
Pergunta
O código a seguir não será executado corretamente no IE7 com os service packs mais recentes instalados.
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Disposition", "attachment;filename=Contacts.xls");
response.ContentType = "application/octet-stream";
System.Text.UnicodeEncoding Encoding = new System.Text.UnicodeEncoding();
byte[] unicodeBytes = {255,254};
int length = 2 + Encoding.GetByteCount(_exportContent); // _exportContent is string.
response.AddHeader("Content-Length", length.ToString());
response.OutputStream.Write(unicodeBytes, 0, 2);
unicodeBytes = Encoding.GetBytes(_exportContent);
response.OutputStream.Write(unicodeBytes, 2, unicodeBytes.Length);
response.End();
Estou abrindo a página aspx com js (window.open ()) e executar o código acima no Page_Load ().
O estranho é que a janela aparece, tenta carregar / mostrar o diálogo de arquivo e, em seguida, você ouve o som como uma janela pop-up foi bloqueado (embora bloqueador de pop-up está desactivado!).
Informações adicionais:
- O comportamento acontece tanto no XP e W2k3 (que é um servidor web real sem nada instalado, mas IE7 & FW 3.5 SP1 e service packs mais recentes.)
- O mesmo código fina trabalha com FW 2.0
-. Firefox não tem problemas para exibir um diálogo de arquivo
Eu seria curioso para saber se alguém tem correu para o mesmo problema e pode fornecer uma solução para obter a coisa está funcionando no IE7.
Cheers,
Dimi
Solução
Adicionar um cabeçalho dizendo IE explicitamente para CACHE o arquivo. IE tem bugs conhecidos com não ser capaz de corretamente salvar um arquivo se ele é enviado como um arquivo no-cache.
Outras dicas
Eu tive o mesmo problema, e passou uma hora sendo totalmente frustrado. Como navegadores habituais IE da Microsoft são a raiz de todas as dores de cabeça. Tudo funcionou bem em outros navegadores. A solução é simples: O usuário terá que ajustar um cenário IE7, indo para 'Ferramentas> Opções da Internet> aba 'Segurança'> Para 'Internet' e / ou 'Intranet local' ajustar as configurações de segurança, clicando no botão 'Nível personalizado ...'
Vá para a 'Downloads' nó '> Aviso automático para downloads de arquivos'> verificação 'Ativar'
Isso fixa-lo para meus usuários.
Espero que ajude.
tive esse problema na nossa intranet, automática para transferência de não trabalho para mim (já foi selecionado), mas isso fez ...
Ferramentas -> Opções da Internet
guia Sobre Segurança selecione ‘Intranet local’, em seguida, clique em Sites
Clique em Avançado
Digite “http://your.url.com” e clique em Adicionar
Clique em Fechar -> Ok -> Ok
Esperamos que isso funciona para você também;)
Eu ainda não pode obter a caixa de diálogo para não desaparecer. Isso acontece quando o aplicativo acessa uma [webmethod] para reunir informações para passar para a página que está tentando baixar os resultados para o Excel.
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileNameToUse + "\"");
Response.CacheControl = "Public";
Response.Write(output);
Response.Flush();
Response.Close();
Isso também só aparece para acontecer ao acessar o sit web usando um endereço IP (999.11.1.111 \ default.aspx ....). Ele funciona ao acessá-lo via loacalhost \ default.aspx
Para testar se a segurança está causando esse problema, definir o destino para _self. A barra de aviso no topo do IE deve aparecer. Se esta é a causa, verificar a segurança do IE. Especificamente o prompt para download parte.