Una de las cosas que muchas veces interesa hacer en nuestras aplicaciones es forzar la descarga de un archivo a través de un script PHP, por ejemplo para llevar la cuenta de los archivos descargados. Para ello se puede implementar una clase que simplifique el proceso, por ejemplo esta:

<?php

class DownloadFile{
	private $mimeType;
	private $filename;
	private $downloadName;

	public function __construct($file, $mimeType = '', $downloadName = '')
	{
		if(!file_exists($file)) return;
		$this->filename = $file;
		$this->mimeType = $mimeType;

		if($downloadName != '')
			$this->downloadName = $downloadName;
		else
			$this->downloadName = $file;
	}

	public function download()
	{

		header("Content-type: ".$this->mimeType);
		header("Content-length: ".filesize($this->filename));
		header("Content-Disposition: attachment; filename=\"".$this->downloadName."\n");
		readfile($this->filename);
	}

	public function setMimeType($mimeType)
	{
		$this->mimeType = $mimeType;
	}

	public function setDownloadName($downloadName)
	{
		$this->downloadName = $downloadName;
	}

}
?>

Por supuesto la clase se puede mejorar mucho (por ejemplo comprobando si el archivo existe o el MIME Type), pero es solo un ejemplo base de como se podría implementar este patrón.

Artículos relacionados:

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto