Não é possível baixar arquivo no IE7, mas não há qualquer problema no Firefox, Chrome, etc ..?
-
02-07-2019 - |
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).
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 ??p>
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