PHP Scripts Development » PHP snippets and scripts forum

header problem with IE7

(6 posts)

Great offers not only for geeks!


  1. While fixing the download function for the classes I noticed that in IE7 this header doesn't work:

    header('Content-Type: application/zip');

    actually this "general" header works fine:

    header('Content-Type: application/force-download');

    any idea why?

    Posted 6 months ago #
  2. <?php
    
    function dl_file($file){
    
        //First, see if the file exists
        if (!is_file($file)) { die("<b>404 File not found!</b>"); }
    
        //Gather relevent info about file
        $len = filesize($file);
        $filename = basename($file);
        $file_extension = strtolower(substr(strrchr($filename,"."),1));
    
        //This will set the Content-Type to the appropriate setting for the file
        switch( $file_extension ) {
              case "pdf": $ctype="application/pdf"; break;
          case "exe": $ctype="application/octet-stream"; break;
          case "zip": $ctype="application/zip"; break;
          case "doc": $ctype="application/msword"; break;
          case "xls": $ctype="application/vnd.ms-excel"; break;
          case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
          case "gif": $ctype="image/gif"; break;
          case "png": $ctype="image/png"; break;
          case "jpeg":
          case "jpg": $ctype="image/jpg"; break;
          case "mp3": $ctype="audio/mpeg"; break;
          case "wav": $ctype="audio/x-wav"; break;
          case "mpeg":
          case "mpg":
          case "mpe": $ctype="video/mpeg"; break;
          case "mov": $ctype="video/quicktime"; break;
          case "avi": $ctype="video/x-msvideo"; break;
    
          //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
          case "php":
          case "htm":
          case "html":
          case "txt": die("<b>Cannot be used for ". $file_extension ." files!</b>"); break;
    
          default: $ctype="application/force-download";
        }
    
        //Begin writing headers
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
    
        //Use the switch-generated Content-Type
        header("Content-Type: $ctype");
    
        //Force the download
        $header="Content-Disposition: attachment; filename=".$filename.";";
        header($header );
        header("Content-Transfer-Encoding: binary");
        header("Content-Length: ".$len);
        @readfile($file);
        exit;
    }
    
    ?>

    This works in both IE and Firefox.

    Posted 6 months ago #
  3. Thanks for the example code, but try this content type

    case "zip": $ctype="application/zip"; break;

    in IE7 and you will see that it doesn't work (or at least with the dynamic zip file I have generated)

    Posted 6 months ago #
  4. don't get me wrong, the script I'm using is fine it's just the one header which is doing strange in IE7...

    Posted 6 months ago #
  5. header("Content-Type: application/x-zip-compressed");

    This İs ok

    TEST PAGE MY server

    my Code Using

    <?php
    $url="db-1.0.4.zip" ;

    $filename = "db-1.0.4.zip";
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/x-zip-compressed");
    header("Content-Type: application/zip");

    $uagent = strtolower ($_SERVER["HTTP_USER_AGENT"]);
    if(is_integer (strpos($uagent, "msie")) and is_integer (strpos($uagent, "win")))
    header("Content-Disposition: filename=".basename($filename).";" ); else
    header("Content-Disposition: attachment; filename=".basename($filename).";" );
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($filename));

    readfile($filename);
    ?>

    Explorer IE7 Using

    application/x-compressed
    application/x-zip-compressed
    application/x-gzip-compressed

    Posted 6 months ago #
  6. OK,

    I think the problem is the class I'm using to create the zip files. It might be the same reason why the files can't be opened on a Mac system.

    Thanks!

    Posted 6 months ago #

RSS feed for this topic

Reply

You must log in to post.