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

Foi útil?

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.

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