1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
5 * An open source application development framework for PHP 5.1.6 or newer
8 * @author ExpressionEngine Dev Team
9 * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
10 * @license http://codeigniter.com/user_guide/license.html
11 * @link http://codeigniter.com
16 // ------------------------------------------------------------------------
19 * CodeIgniter Download Helpers
21 * @package CodeIgniter
24 * @author ExpressionEngine Dev Team
25 * @link http://codeigniter.com/user_guide/helpers/download_helper.html
28 // ------------------------------------------------------------------------
33 * Generates headers that force a download to happen
36 * @param string filename
37 * @param mixed the data to be downloaded
40 if ( ! function_exists('force_download'))
42 function force_download($filename = '', $data = '')
44 if ($filename == '' OR $data == '')
49 // Try to determine if the filename includes a file extension.
50 // We need it in order to set the MIME type
51 if (FALSE === strpos($filename, '.'))
56 // Grab the file extension
57 $x = explode('.', $filename);
60 // Load the mime types
61 if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes'.EXT))
63 include(APPPATH.'config/'.ENVIRONMENT.'/mimes'.EXT);
65 elseif (is_file(APPPATH.'config/mimes'.EXT))
67 include(APPPATH.'config/mimes'.EXT);
70 // Set a default mime if we can't find it
71 if ( ! isset($mimes[$extension]))
73 $mime = 'application/octet-stream';
77 $mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
80 // Generate the server headers
81 if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE)
83 header('Content-Type: "'.$mime.'"');
84 header('Content-Disposition: attachment; filename="'.$filename.'"');
86 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
87 header("Content-Transfer-Encoding: binary");
88 header('Pragma: public');
89 header("Content-Length: ".strlen($data));
93 header('Content-Type: "'.$mime.'"');
94 header('Content-Disposition: attachment; filename="'.$filename.'"');
95 header("Content-Transfer-Encoding: binary");
97 header('Pragma: no-cache');
98 header("Content-Length: ".strlen($data));
106 /* End of file download_helper.php */
107 /* Location: ./system/helpers/download_helper.php */