Return to Snippet

Revision: 25657
at April 5, 2010 20:16 by jrobinsonc


Updated Code
function download_file($filename, $name = NULL, $mime_type = 'application/octet-stream') {

	if (!is_file($filename)) {
		header('HTTP/1.0 404 Not Found', TRUE, 404);
		return FALSE;
	}

	$name = is_null($name) ? basename($filename) : $name;
	$size = filesize($filename);

	header('Content-Description: File Transfer');
	header("Content-Disposition: attachment; filename=$name");
	header("Content-Type: $mime_type");
	header("Content-Transfer-Encoding: binary");
	header('Expires: 0');
	header('Pragma: no-cache');
	header("Content-Length: $size");

	if(@readfile($filename) === FALSE) {
		header('HTTP/1.0 500 Internal Server Error', TRUE, 500);
	}
}

# Uso:
download_file('archivo55.avi');

# En el segundo parametro se puede indicar con que nombre el archivo debe descargarse por defecto.
download_file('archivo55.avi', 'pelicula.avi');

# Y en el tercer parametro se puede indicar el mime-type del archivo.
download_file('archivo55.avi', 'pelicula.avi', 'video/x-msvideo');

Revision: 25656
at April 5, 2010 20:01 by jrobinsonc


Updated Code
function download_file($filename, $name = NULL, $mime_type = 'application/octet-stream') {

	if (!is_file($filename)) {
		header('HTTP/1.0 404 Not Found', TRUE, 404);
		return FALSE;
	}

	$name = is_null($name) ? basename($filename) : $name;

	header('Content-Description: File Transfer');
	header('Content-Disposition: attachment; filename="'. $name .'"');
	header('Content-Type: '. $mime_type);
	header("Content-Transfer-Encoding: binary");
	header('Expires: 0');
	header('Pragma: no-cache');
	header("Content-Length: ". filesize($filename));

	if(@readfile($filename) === FALSE) {
		header('HTTP/1.0 500 Internal Server Error', TRUE, 500);
	}
}

# Uso:
download_file('archivo55.avi');

# En el segundo parametro se puede indicar con que nombre el archivo debe descargarse por defecto.
download_file('archivo55.avi', 'pelicula.avi');

# Y en el tercer parametro se puede indicar el mime-type del archivo.
download_file('archivo55.avi', 'pelicula.avi', 'video/x-msvideo');

Revision: 25655
at April 5, 2010 08:17 by jrobinsonc


Initial Code
/********************
*@file - path to file
*/
function force_download($file)
{
    if ((isset($file))&&(file_exists($file))) {
       header("Content-length: ".filesize($file));
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="' . $file . '"');
       readfile("$file");
    } else {
       echo "No file selected";
    }
}

Initial URL


Initial Description


Initial Title
Forzar la descarga de archivos

Initial Tags


Initial Language
PHP