Welcome Guest, Not a member yet? Register   Sign In
Headers for file download the CI way
#4

[eluser]flaky[/eluser]
As you can see from the code below (download_helper.php), CodeIgniter uses php to set the headers, it doesn't have it's own set of complicated functions, but basically uses php's functions.
Code:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* CodeIgniter
*
* An open source application development framework for PHP 4.3.2 or newer
*
* @package        CodeIgniter
* @author        ExpressionEngine Dev Team
* @copyright    Copyright (c) 2008 - 2009, EllisLab, Inc.
* @license        http://ellislab.com/codeigniter/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://ellislab.com/codeigniter/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
        @include(APPPATH.'config/mimes'.EXT);
    
        // 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 (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
        {
            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 */


Messages In This Thread
Headers for file download the CI way - by El Forum - 01-24-2010, 07:59 AM
Headers for file download the CI way - by El Forum - 01-24-2010, 08:55 AM
Headers for file download the CI way - by El Forum - 01-24-2010, 08:38 PM
Headers for file download the CI way - by El Forum - 01-25-2010, 01:07 AM
Headers for file download the CI way - by El Forum - 01-25-2010, 02:25 AM
Headers for file download the CI way - by El Forum - 01-25-2010, 01:05 PM
Headers for file download the CI way - by El Forum - 01-25-2010, 01:23 PM
Headers for file download the CI way - by El Forum - 01-25-2010, 11:24 PM



Theme © iAndrew 2016 - Forum software by © MyBB