Posts Tagged ‘clases’

junio 6, 2009 0

Clase para forzar la descarga de archivos en PHP

By in PHP

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.

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

Tags: ,