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
12 years ago
|
<?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 */
|