Scripts

Force download

Met dir script zorg je ervoor dat al de files gedownloaded worden. Ik heb ervoor gezorgd dat er zoveel mogelijk extensies in verwerkt werden. Deze extensielijst hebt ik van http://actionscript.org/forums/showthread.php3?t=89784 . De opstap voor mijn scriptje heb ik dan weer van een andere website: http://www.phpit.net/code/force-download/ . Zo wist ik welke headers ik moest gebruiken. Of ik het geheel in een class moet zetten of niet, daar ben k ni echt uit geraakt. Vandaar deze enkele functions ;-) Opbouwende kritiek is steeds welkom! :-D

force-download
<?php
function force_download ($name)
	{
		global $config;
		$extensie = get_extensions($name);
		
		/**
		 * Bepalen bestandsgrootte
		 */
		$filesize = filesize($config['upload_path'] . $name);
		
		/**
		 * Bepalen juiste mimetype
		 */
		$mimetype = set_mimetype($extensie);
	
	    /**
	     * Al de verdere output leegmaken
	     */
	    ob_clean_all();
		
	    /**
	     * Verzenden headers
	     */
	    
		header("Pragma: public"); // required
		header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Cache-Control: private",false); // required for certain browsers
		header("Content-Transfer-Encoding: binary");
		header("Content-Type: " . $mimetype);
		header("Content-Length: " . $filesize);
		header("Content-Disposition: attachment; filename=\"" . $name . "\";" );
		
		readfile($config['upload_path'] . $name);
	
	    //Send data
	    //echo $data;
	    die();
	}
	
	function ob_clean_all ()
	{
	    $ob_active = ob_get_length () !== false;
	    while($ob_active)
	    {
	        ob_end_clean();
	        $ob_active = ob_get_length () !== false;
	    }
	
	    return true;
	}
	
	/**
	 * Bepalen extensie van een file
	 */
	function get_extensions($filenaam)
	{
		$filenaam_array = explode(".", $filenaam);
		$filenaam_aantal = count($filenaam_array);
		$extensie = $filenaam_array[$filenaam_aantal-1];
		return $extensie;
	}
		
	/**
	 * Ophalen juiste mime-types
	 */
	function set_mimetype($extensie)
	{
		$mimetype_array = array(
			'application/andrew-inset' => 'ez',
			'application/mac-binhex40' => 'hqx',
			'application/mac-compactpro' => 'cpt',
			'application/mathml+xml' => 'mathml',
			'application/msword' => 'doc',
			'application/octet-stream' => 'bin',
			'application/octet-stream' => 'dms',
			'application/octet-stream' => 'lha',
			'application/octet-stream' => 'lzh',
			'application/octet-stream' => 'exe',
			'application/octet-stream' => 'dll',
			'application/octet-stream' => 'dmg',
			'application/oda' => 'oda',
			'application/ogg' => 'ogg',
			'application/pdf' => 'pdf',
			'application/postscript' => 'ai',
			'application/postscript' => 'eps',
			'application/postscript' => 'ps',
			'application/rdf+xml' => 'rdf',
			'application/smil' => 'smi',
			'application/smil' => 'smil',
			'application/srgs' => 'gram',
			'application/srgs+xml' => 'grxml',
			'application/vnd.mif' => 'mif',
			'application/vnd.mozilla.xul+xml' => 'xul',
			'application/vnd.ms-excel' => 'xls',
			'application/vnd.ms-powerpoint' => 'ppt',
			'application/vnd.wap.wbxml' => 'wbxml',
			'application/vnd.wap.wmlc' => '.wmlc',
			'application/vnd.wap.wmlc' => 'wmlc',
			'application/vnd.wap.wmlscriptc' => 'wmlsc',
			'application/voicexml+xml' => 'vxml',
			'application/x-bcpio' => 'bcpio',
			'application/x-cdlink' => 'vcd',
			'application/x-chess-pgn' => 'pgn',
			'application/x-cpio' => 'cpio',
			'application/x-csh' => 'csh',
			'application/x-director' => 'dcr',
			'application/x-director' => 'dir',
			'application/x-director' => 'dxr',
			'application/x-dvi' => 'dvi',
			'application/x-futuresplash' => 'spl',
			'application/x-gtar' => 'gtar',
			'application/x-hdf' => 'hdf',
			'application/x-httpd-php' => 'php',
			'application/x-httpd-php' => 'php4',
			'application/x-httpd-php' => 'php3',
			'application/x-httpd-php' => 'phtml',
			'application/x-httpd-php-source' => 'phps',
			'application/x-javascript' => 'js',
			'application/x-koan' => 'skp',
			'application/x-koan' => 'skd',
			'application/x-koan' => 'skt',
			'application/x-koan' => 'skm',
			'application/x-latex' => 'latex',
			'application/x-netcdf' => 'nc',
			'application/x-netcdf' => 'cdf',
			'application/x-pkcs7-crl' => '.crl',
			'application/x-sh' => 'sh',
			'application/x-shar' => 'shar',
			'application/x-shockwave-flash' => 'swf',
			'application/x-stuffit' => 'sit',
			'application/x-sv4cpio' => 'sv4cpio',
			'application/x-sv4crc' => 'sv4crc',
			'application/x-tar' => '.tgz',
			'application/x-tar' => 'tar',
			'application/x-tcl' => 'tcl',
			'application/x-tex' => 'tex',
			'application/x-texinfo' => 'texinfo',
			'application/x-texinfo' => 'texi',
			'application/x-troff' => 't',
			'application/x-troff' => 'tr',
			'application/x-troff' => 'roff',
			'application/x-troff-man' => 'man',
			'application/x-troff-me' => 'me',
			'application/x-troff-ms' => 'ms',
			'application/x-ustar' => 'ustar',
			'application/x-wais-source' => 'src',
			'application/x-x509-ca-cert' => '.crt',
			'application/xhtml+xml' => 'xhtml',
			'application/xhtml+xml' => 'xht',
			'application/xml' => 'xml',
			'application/xml' => 'xsl',
			'application/xml-dtd' => 'dtd',
			'application/xslt+xml' => 'xslt',
			'application/zip' => 'zip',
			'audio/basic' => 'au',
			'audio/basic' => 'snd',
			'audio/midi' => 'mid',
			'audio/midi' => 'midi',
			'audio/midi' => 'kar',
			'audio/mpeg' => 'mpga',
			'audio/mpeg' => 'mp2',
			'audio/mpeg' => 'mp3',
			'audio/x-aiff' => 'aif',
			'audio/x-aiff' => 'aiff',
			'audio/x-aiff' => 'aifc',
			'audio/x-mpegurl' => 'm3u',
			'audio/x-pn-realaudio' => 'ram',
			'audio/x-pn-realaudio' => 'rm',
			'audio/x-pn-realaudio-plugin' => 'rpm',
			'audio/x-realaudio' => 'ra',
			'audio/x-wav' => 'wav',
			'chemical/x-pdb' => 'pdb',
			'chemical/x-xyz' => 'xyz',
			'image/bmp' => 'bmp',
			'image/cgm' => 'cgm',
			'image/gif' => 'gif',
			'image/ief' => 'ief',
			'image/jpeg' => 'jpeg',
			'image/jpeg' => 'jpg',
			'image/jpeg' => 'jpe',
			'image/png' => 'png',
			'image/svg+xml' => 'svg',
			'image/tiff' => 'tiff',
			'image/tiff' => 'tif',
			'image/vnd.djvu' => 'djvu',
			'image/vnd.djvu' => 'djv',
			'image/vnd.wap.wbmp' => 'wbmp',
			'image/x-cmu-raster' => 'ras',
			'image/x-icon' => 'ico',
			'image/x-portable-anymap' => 'pnm',
			'image/x-portable-bitmap' => 'pbm',
			'image/x-portable-graymap' => 'pgm',
			'image/x-portable-pixmap' => 'ppm',
			'image/x-rgb' => 'rgb',
			'image/x-xbitmap' => 'xbm',
			'image/x-xpixmap' => 'xpm',
			'image/x-xwindowdump' => 'xwd',
			'model/iges' => 'igs',
			'model/iges' => 'iges',
			'model/mesh' => 'msh',
			'model/iges' => 'iges',
			'model/mesh' => 'mesh',
			'model/iges' => 'iges',
			'model/mesh' => 'silo',
			'model/vrml' => 'wrl',
			'model/vrml' => 'vrml',
			'text/calendar' => 'ics',
			'text/calendar' => 'ifb',
			'text/css' => 'css',
			'text/html' => 'shtml',
			'text/html' => 'html',
			'text/html' => 'htm',
			'text/plain' => 'asc',
			'text/plain' => 'txt',
			'text/richtext' => 'rtx',
			'text/rtf' => 'rtf',
			'text/sgml' => 'sgml',
			'text/sgml' => 'sgm',
			'text/tab-separated-values' => 'tsv',
			'text/vnd.wap.wml' => '.wml',
			'text/vnd.wap.wml' => 'wml',
			'text/vnd.wap.wmlscript' => 'wmls',
			'text/vnd.wap.wmlscript' => 'wmls',
			'text/x-setext' => 'etx',
			'video/mpeg' => 'mpeg',
			'video/mpeg' => 'mpg',
			'video/mpeg' => 'mpeg',
			'video/mpeg' => 'mpe',
			'video/quicktime' => 'qt',
			'video/quicktime' => 'mov',
			'video/vnd.mpegurl' => 'mxu',
			'video/vnd.mpegurl' => 'm4u',
			'video/x-msvideo' => 'avi',
			'video/x-sgi-movie' => 'movie'
			);
		while ($mimetype_extensie = current($mimetype_array))
		{
		   if ($mimetype_extensie == $extensie) {
		       echo key($mimetype_array).'<br />';
		       $mimetype = key($mimetype_array);
		   }
		   next($mimetype_array);
		}
	}
	
	/**
	 * Bepalen naam file
	 */
	$name = $item['upload_naam'];
	
	//echo $extensie;
	force_download ($name);
?>

Reacties

0
Nog geen reacties.