Skip to content

Instantly share code, notes, and snippets.

@mandado
Created July 15, 2013 20:29
Show Gist options
  • Save mandado/6003154 to your computer and use it in GitHub Desktop.
Save mandado/6003154 to your computer and use it in GitHub Desktop.
Script básico de forçar download em php.
<?php
//$file = "/folder/filename.ext";
function force_download($file) {
$ext = explode(".", $file);
switch($ext[sizeof($ext)-1]) {
case 'jar':
$mime = "application/java-archive";
break;
case 'zip':
$mime = "application/zip";
break;
case 'jpeg':
$mime = "image/jpeg";
break;
case 'jpg':
$mime = "image/jpg";
break;
case 'jad':
$mime = "text/vnd.sun.j2me.app-descriptor";
break;
case "gif":
$mime = "image/gif";
break;
case "png":
$mime = "image/png";
break;
case "pdf":
$mime = "application/pdf";
break;
case "txt":
$mime = "text/plain";
break;
case "doc":
$mime = "application/msword";
break;
case "ppt":
$mime = "application/vnd.ms-powerpoint";
break;
case "wbmp":
$mime = "image/vnd.wap.wbmp";
break;
case "wmlc":
$mime = "application/vnd.wap.wmlc";
break;
case "mp4s":
$mime = "application/mp4";
break;
case "ogg":
$mime = "application/ogg";
break;
case "pls":
$mime = "application/pls+xml";
break;
case "asf":
$mime = "application/vnd.ms-asf";
break;
case "swf":
$mime = "application/x-shockwave-flash";
break;
case "mp4":
$mime = "video/mp4";
break;
case "m4a":
$mime = "audio/mp4";
break;
case "m4p":
$mime = "audio/mp4";
break;
case "mp4a":
$mime = "audio/mp4";
break;
case "mp3":
$mime = "audio/mpeg";
break;
case "m3a":
$mime = "audio/mpeg";
break;
case "m2a":
$mime = "audio/mpeg";
break;
case "mp2a":
$mime = "audio/mpeg";
break;
case "mp2":
$mime = "audio/mpeg";
break;
case "mpga":
$mime = "audio/mpeg";
break;
case "wav":
$mime = "audio/wav";
break;
case "m3u":
$mime = "audio/x-mpegurl";
break;
case "bmp":
$mime = "image/bmp";
break;
case "ico":
$mime = "image/x-icon";
break;
case "3gp":
$mime = "video/3gpp";
break;
case "3g2":
$mime = "video/3gpp2";
break;
case "mp4v":
$mime = "video/mp4";
break;
case "mpg4":
$mime = "video/mp4";
break;
case "m2v":
$mime = "video/mpeg";
break;
case "m1v":
$mime = "video/mpeg";
break;
case "mpe":
$mime = "video/mpeg";
break;
case "mpeg":
$mime = "video/mpeg";
break;
case "mpg":
$mime = "video/mpeg";
break;
case "mov":
$mime = "video/quicktime";
break;
case "qt":
$mime = "video/quicktime";
break;
case "avi":
$mime = "video/x-msvideo";
break; case "midi":
$mime = "audio/midi";
break;
case "mid":
$mime = "audio/mid";
break;
case "amr":
$mime = "audio/amr";
break;
default:
$mime = "application/force-download";
}
header('Content-Description: File Transfer');
header('Content-Type: '.$mime);
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);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment