You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.7 KiB
107 lines
2.7 KiB
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
|
/** |
|
* CodeIgniter |
|
* |
|
* An open source application development framework for PHP 5.1.6 or newer |
|
* |
|
* @package CodeIgniter |
|
* @author ExpressionEngine Dev Team |
|
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. |
|
* @license http://codeigniter.com/user_guide/license.html |
|
* @link http://codeigniter.com |
|
* @since Version 1.0 |
|
* @filesource |
|
*/ |
|
|
|
// ------------------------------------------------------------------------ |
|
|
|
/** |
|
* CodeIgniter Download Helpers |
|
* |
|
* @package CodeIgniter |
|
* @subpackage Helpers |
|
* @category Helpers |
|
* @author ExpressionEngine Dev Team |
|
* @link http://codeigniter.com/user_guide/helpers/download_helper.html |
|
*/ |
|
|
|
// ------------------------------------------------------------------------ |
|
|
|
/** |
|
* Force Download |
|
* |
|
* Generates headers that force a download to happen |
|
* |
|
* @access public |
|
* @param string filename |
|
* @param mixed the data to be downloaded |
|
* @return void |
|
*/ |
|
if ( ! function_exists('force_download')) |
|
{ |
|
function force_download($filename = '', $data = '') |
|
{ |
|
if ($filename == '' OR $data == '') |
|
{ |
|
return FALSE; |
|
} |
|
|
|
// Try to determine if the filename includes a file extension. |
|
// We need it in order to set the MIME type |
|
if (FALSE === strpos($filename, '.')) |
|
{ |
|
return FALSE; |
|
} |
|
|
|
// Grab the file extension |
|
$x = explode('.', $filename); |
|
$extension = end($x); |
|
|
|
// Load the mime types |
|
if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes.php')) |
|
{ |
|
include(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'); |
|
} |
|
elseif (is_file(APPPATH.'config/mimes.php')) |
|
{ |
|
include(APPPATH.'config/mimes.php'); |
|
} |
|
|
|
// Set a default mime if we can't find it |
|
if ( ! isset($mimes[$extension])) |
|
{ |
|
$mime = 'application/octet-stream'; |
|
} |
|
else |
|
{ |
|
$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension]; |
|
} |
|
|
|
// Generate the server headers |
|
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE) |
|
{ |
|
header('Content-Type: "'.$mime.'"'); |
|
header('Content-Disposition: attachment; filename="'.$filename.'"'); |
|
header('Expires: 0'); |
|
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); |
|
header("Content-Transfer-Encoding: binary"); |
|
header('Pragma: public'); |
|
header("Content-Length: ".strlen($data)); |
|
} |
|
else |
|
{ |
|
header('Content-Type: "'.$mime.'"'); |
|
header('Content-Disposition: attachment; filename="'.$filename.'"'); |
|
header("Content-Transfer-Encoding: binary"); |
|
header('Expires: 0'); |
|
header('Pragma: no-cache'); |
|
header("Content-Length: ".strlen($data)); |
|
} |
|
|
|
exit($data); |
|
} |
|
} |
|
|
|
|
|
/* End of file download_helper.php */ |
|
/* Location: ./system/helpers/download_helper.php */ |