validarUpload.class.php
Código PHP:
<?php
/**
* PHP Validar Upload Class 1.0 - 23/07/2012
* Copyright (C) 2012 Silvio Valentín Báez
*
* Este programa es software libre: usted puede redistribuirlo y/o modificarlo
* bajo los términos de la Licencia Pública General GNU publicada
* por la Fundación para el Software Libre, ya sea la versión 3
* de la Licencia, o (a su elección) cualquier versión posterior.
*
* Este programa se distribuye con la esperanza de que sea útil, pero
* SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita
* MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO.
* Consulte los detalles de la Licencia Pública General GNU para obtener
* una información más detallada.
*
* Debería haber recibido una copia de la Licencia Pública General GNU
* junto a este programa.
* En caso contrario, consulte <http://www.gnu.org/licenses/>.
*
* Contactos: [email protected]
* Descargar: http://www.webbae.net/proyectos/php-validar-upload.rar
*
*/
class validarUpload{
public $extensiones = 'gif|jpg|png';
protected function imagen($archivo,$extension){
$imagenes = array('bmp','gif','jpg','png');
foreach($imagenes as $ext){
if($extension==$ext){
if(getimagesize($archivo)==false){
$resultado = false;
}else{
$resultado = true;
}
}else{
$resultado = true;
}
}
return $resultado;
}
public function formato($tipo){
$tipos = array(
'image/jpeg' => 'jpg',
'image/jpg' => 'jpg',
'image/pjpeg' => 'jpg',
'image/gif' => 'gif',
'image/png' => 'png',
'application/vnd.openxmlformats-officedocument.word' => 'docx',
'application/msword' => 'doc',
'application/vnd.openxmlformats-officedocument.pres' => 'pptx',
'application/vnd.ms-powerpoint' => 'ppt',
'application/pdf' => 'pdf',
'text/plain' => 'txt',
'video/mpeg' => 'mpeg'
);
foreach($tipos as $mime=>$formato){
if($mime==$tipo){
return $formato;
}
}
}
public function validar($archivo){
$tipo = $_FILES[$archivo]['type'];
$extension = explode('|',$this->extensiones);
$generarNombre = time().md5(uniqid(rand()));
$archivoFormato = $this->formato($tipo);
$imagen = $this->imagen($_FILES[$archivo]['tmp_name'],$archivoFormato);
if($imagen==true){
foreach($extension as $ext){
if($archivoFormato==$ext){
$resultado = true;
}
}
if($resultado==true){
return $generarNombre.'.'.$archivoFormato;
}else{
return false;
}
}else{
return false;
}
}
}
?>
Código PHP:
<?php require('validarUpload.class.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP Validar Upload Class</title>
</head>
<body>
<?
if(isset($_FILES['archivo'])){
$validarUpload = new validarUpload();
$validarUpload->extensiones = 'pdf|jpg|png|doc';
$archivo = $validarUpload->validar('archivo');
if($archivo==false){
echo 'El archivo no es valido.';
}else{
$directorio = 'archivos/';
$guardar = $directorio . $archivo;
if(copy($_FILES['archivo']['tmp_name'], $guardar)) {
echo 'El archivo se subio correctamente.';
}else{
echo 'Error al subir el archivo.';
}
}
exit;
}
?>
<form action="index.php" method="post" enctype="multipart/form-data">
<input type="file" name="archivo" />
<input type="submit" value="enviar">
<div>Archivos permitidos: pdf|jpg|png|doc</div>
</form>
</body>
</html>
demo: http://www.webbae.net/proyectos/php-validar-upload/index.php
descargar: http://www.webbae.net/proyectos/php-validar-upload.rar