IE7에서는 파일을 다운로드할 수 없지만 Firefox, Chrome 등에서는 문제가 없나요?

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

문제

암호화된 URL을 수신하고 그로부터 다운로드를 생성하는 스크립트가 있는데, 스크립트의 가장 비판적인 부분은 다음과 같습니다.

$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');
}

다운로드는 IE를 제외한 모든 브라우저에서 매력적으로 작동합니다. '캐시 없음' 헤더와 관련된 문제를 본 적이 있지만 그런 것은 보내지 않고 utf-8 문자에 대해 이야기하지만 아무 것도 없습니다. utf-8 characters(그리고 $filename에는 utf-8 문자도 없습니다).

도움이 되었습니까?

해결책

이 장소 IE6에서 귀하와 비슷한 문제가 있습니다.요약:

session_start()는 기본적으로 "no-store"를 포함한 캐시 제어 헤더를 보냅니다.Internet Explorer는 문자 그대로 이것을 너무 많이 받아들이지 만 케이스에 대한 적절한 오류 처리가 없으며 결과적으로 출력 페이지를 디스크에 저장하려고 할 때 암호로 폭발합니다.

session_start () 전에 "session_cache_limiter ( 'none');"를 추가하거나 해당 함수를 찾아 제한자를 적절하게 조정하십시오 (아마도 '개인'이 마크에 더 가깝습니다).

귀하가 게시한 코드 조각에 다음 호출이 포함되어 있지 않다는 것을 알고 있습니다. session_start();, 하지만 전화를 받았지만 우리에게 보여주지 않았을 경우를 대비해 이 가능한 솔루션을 공유하겠다고 생각했습니다.

다른 팁

헤더를 보내서 해결했습니다.

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

나는 session_start()가 자체적으로 헤더를 보내는 것을 몰랐습니다.

다음 댓글 섹션에서 답변을 찾았습니다. 오류:Internet Explorer가 WebServer에서 FileName을 다운로드할 수 없습니다.

이것을 사용하십시오

IE7 브라우저에서 인터넷 옵션으로 이동 옵션-> 보안 ---> 사용자 정의 레벨 ---> 다운로드를 통해 파일 다운로드를위한 자동 프롬프트가 가능합니다.

이렇게 하면 문제가 해결될 것입니다.

이것이 도움이 되길 바랍니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top