PHP script to download file not working in IE

后端 未结 5 637
暗喜
暗喜 2020-12-08 11:53

I have a script that takes a key from $_GET[\'key\'] , looks up the location in a database and uses the readfile together with some headers to present a download for the use

相关标签:
5条回答
  • 2020-12-08 12:30

    Never replace this: header("Content-type: application/octet-stream");

    with this: header("Content-Type: application/force-download");

    "application/octet-stream" is simply the most universal and works on most browsers.

    I tried using "application/zip" in one of my tests since I was technically dealing with a ZIP file, but IE6.0 corrupted the download! Everything else behaved normally though. But yeah, had to switch back to "application/octet-stream" so any code out there that tries to detect the file extension, and switch to other content-types specific to the extension are risky! You're better off using "application/octet-stream" for ALL binary files!

    0 讨论(0)
  • 2020-12-08 12:36

    To solve the error : "Internet Explorer cannot download download.php from www.example.com", Add these headers to your script:

    header("Pragma: ");

    header("Cache-Control: ");

    The code will remove the Cache-Control from headers which makes the download problem.

    The above code should be added at the top of the file.

    It works fine for us.

    0 讨论(0)
  • 2020-12-08 12:38

    Just a hint, if someone (like me) is facing problems with directly entering a filedownload into the address bar using a secured https-request. There is a IE bug that is causing this download to fail:

    http://support.microsoft.com/kb/323308/en-us

    Only workaround seems to be setting the cache-headers according to the article.

    0 讨论(0)
  • 2020-12-08 12:46

    Replace this:
    header("Content-type: application/octet-stream");
    with this:
    header("Content-Type: application/force-download");

    According to this post, IE doesn't normally listen to your headers, and instead looks for itself what you are sending.

    0 讨论(0)
  • 2020-12-08 12:47

    Managed to get this working by using the first example from php.net

    http://us3.php.net/manual/en/function.readfile.php

    
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
    
    
    0 讨论(0)
提交回复
热议问题