Não é possível baixar arquivo no IE7, mas não há qualquer problema no Firefox, Chrome, etc ..?

StackOverflow https://stackoverflow.com/questions/117372

Pergunta

Eu tenho um script que recebe uma URL codificada e de que gera um download, o mais crítico par do script é o seguinte:

$MimeType = new MimeType();
$mimetype = $MimeType->getType($filename);
$basename = basename($filename);
header("Content-type: $mimetype");
header("Content-Disposition: attachment; filename=\"$basename\"");
header('Content-Length: '. filesize($filename));
if ( @readfile($filename)===false ) {
  header("HTTP/1.0 500 Internal Server Error");
  loadErrorPage('500');
}

Transferências funciona como charme em qualquer browser exceto IE, eu vi problemas relacionados com cabeçalhos 'não-cache', mas eu não enviar qualquer coisa assim, eles falam sobre caracteres UTF-8, mas não há qualquer utf-8 characters ( e os US $ filename não tem qualquer UTF-8 characteres nem).

Foi útil?

Solução

Este site tem um problema semelhante ao seu no IE6. Para resumir:

session_start () por padrão envia um cabeçalho de controle de cache, incluindo "no-store". Internet Explorer isso leva um pouco demasiado literalmente, mas não tem apropriado manipulação de erro para o caso, e como resultado explode misteriosamente quando você tentar salvar a página de saída para o disco.

Antes de session_start (), adicione "session_cache_limiter ( 'none');", ou olhar para cima que função e ajustar o limitador conforme apropriado (provavelmente 'private' está mais perto de a marca).

Eu percebo o trecho de código que você postou não inclui uma chamada para session_start();, mas eu percebi que eu iria partilhar esta solução possível no caso de você ter uma chamada para ele e simplesmente não nos mostrar.

Outras dicas

Eu resolvi enviando os cabeçalhos

header('Pragma: public');
header('Cache-Control: max-age=0');

Eu não sabia que session_start () cabeçalhos Enviar por si própria.

Eu encontrei a resposta na seção de comentários de: Erro: Internet Explorer não pode Baixar FileName de WebServer

Use esta

No IE7 navegador go opção de internet para -> segurança ---> nível personalizado ---> Downloads em seguida, permitiu autometic alertando para download de arquivos.

isso vai resolver o problema.

espero que isso vai ajudar

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