PHP Classes
elePHPant
Icontem

File: rapidownload.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Sebastian  >  RapiDownload  >  rapidownload.class.php  >  Download  
File: rapidownload.class.php
Role: Class source
Content type: text/plain
Description: This is the class file
Class: RapiDownload
Serve files to the users of a site for download
Author: By
Last change: He agregado un nuevo método para poder VER el archivo en vez de bajarlo, está mejor organizado en cuanto a la distribución de las funciones.
-----------------------------------------------------------------------
Added a new method to see the file instead of download it. Functions distribution are better organized.
Date: 9 years ago
Size: 4,576 bytes
 

Contents

Class file image Download
<?php
/*
Forma de uso:

<?
include("rapidownload.class.php");
$rapidownload = new rapidownload("archivos-para-bajar/");
// $verlo define si queremos ver el archivo o bajarlo directamente
if($verlo == 1){
        $rapidownload->ver_archivo("foto-hedge-y-micros.jpg");
}else{
    if(!$rapidownload->start_download("foto-hedge-y-micros.jpg")){
        echo $download->get_error();
    }
}
exit();
?>

* Descripción Class para bajar archivos
* Autor Escrito por Sebastián Molina - sosepi@hotmail.com
* Hecho Jueves 27 de Julio de 2005
* Actualizaciones
    13:05 31/08/2005 -
        He agregado un nuevo método para poder VER el archivo en vez de bajarlo, está mejor organizado en cuanto a la
        distribución de las funciones.
        -----------------------------------------------------------------------
        Added a new method to see the file instead of download it. Functions distribution are better organized.
       
       
* Extra info:
    El que quiera puede modificar a gusto este código, no está sujeto a ninguna licencia.
*/

class rapidownload{
    var
$filename = "";
    var
$realfilename = "";
    var
$file_extension = "";
    var
$error = "";
    var
$ctype = "";
    var
$filesize = "";
    var
$galeria = "";
    function
rapidownload($galeria = "",$filename = ""){
        if(
$filename != "")
           
$this->filename = $filename;
        if(
$galeria != "")
           
$this->galeria = $galeria;
    }
    function
set_fileProperties($filename = ""){
        if(
$filename != ""){
           
$this->filename = $filename;
        }
       
$this->realfilename = realpath($this->galeria.$this->filename);
       
$this->file_extension = strtolower(substr(strrchr($this->realfilename,"."),1));
       
$this->filesize = filesize($this->realfilename);
    }
    function
procesar(){
        if(
$this->filename != ""){
            if(
file_exists($this->galeria.$this->filename)){
               
$this->set_fileProperties();
                return
true;
            }else{
               
$this->error = 'El archivo especificado ('.$this->filename.') no existe';
                return
false;
            }
        }else{
           
$this->error = 'No se ha especificado nungun archivo para descargar.';
            return
false;
        }
    }
   
    function
set_filename($filename){
       
$this->filename = $filename;
    }

    function
set_galery($galeria){
       
$this->galeria = $galeria;
    }
    function
get_error(){
        if(
$this->error == "")
            return
"Error no especificado";
        else
            return
$this->error;
    }
    function
get_ctype($filename = ""){
        if(
$filename != ""){
           
$this->filename = $filename;
        }
        if(
$this->file_extension == ""){
           
$this->set_fileProperties($this->filename);
        }
        switch(
$this->file_extension){
            case
"pdf": $this->ctype="application/pdf"; break;
            case
"exe": $this->ctype="application/octet-stream"; break;
            case
"zip": $this->ctype="application/zip"; break;
            case
"doc": $this->ctype="application/msword"; break;
            case
"xls": $this->ctype="application/vnd.ms-excel"; break;
            case
"ppt": $this->ctype="application/vnd.ms-powerpoint"; break;
            case
"gif": $this->ctype="image/gif"; break;
            case
"png": $this->ctype="image/png"; break;
            case
"jpeg":
            case
"jpg": $this->ctype="image/jpg"; break;
            case
"mp3": $this->ctype="audio/mpeg"; break;
            case
"wav": $this->ctype="audio/x-wav"; break;
            case
"mpeg":
            case
"mpg":
            case
"mpe": $this->ctype="video/mpeg"; break;
            case
"mov": $this->ctype="video/quicktime"; break;
            case
"avi": $this->ctype="video/x-msvideo"; break;
            default:
$this->ctype="application/force-download";
        }
        return
$this->ctype;
    }
    function
ver_archivo($filename = ""){
        if(
$filename != ""){
           
$this->filename = $filename;
        }
       
header("Content-Type: ".$this->get_ctype($this->filename));
        @
readfile($this->galeria.$this->filename) or die("Error fatal; archivo no encontrado.<br>".$this->galeria.$this->filename);
        exit();
    }
    function
start_download($filename = ""){
        if(
$filename != ""){
           
$this->filename = $filename;
        }
        if(
$this->procesar()){
  
header("Pragma: public");
  
header("Expires: 0");
  
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  
header("Cache-Control: public");
  
header("Content-Description: File Transfer");
  
header("Content-Type: ".$this->get_ctype($this->filename));
  
header("Content-Disposition: attachment; filename=".$this->filename.";");
  
header("Content-Transfer-Encoding: binary");
  
header("Content-Length: ".$this->filesize);
    @
readfile($this->galeria.$this->filename) or die("Error fatal; archivo no encontrado.");
            exit();
        }else{
            return
false;
        }
    }
}
?>