Hola que tal, estaba haciendo una clase para subir archivos en php, y me encuentro con un pequeño problema en la funcion in_array [cosa que me esta volviendo dezquisiado].
La clase es esta:
Código PHP:
Ver original# Upload
class Cm_Upload{
# Forma de uso
# $Upload->UploadConfig($Name,$Path);
# $Upload->_Type();
# $Upload->_MinSize();
# $Upload->_MaxSize();
# $Upload->_UploadSave();
# Configuracion
protected $_Name = NULL;
protected $_Path = NULL;
private $_Type = NULL;
private $_MinSize = NULL;
private $_MaxSize = NULL;
# Privates & Condicionales
private $_Extencion = NULL;
# Constructor
public function UploadConfig($Name,$Path){
$this->_Name = $Name;
$this->_Path = $Path;
}
# Convertor Bytes
private function _ConvertBytes($size){
return (int) $size;
}
$size = (int) $size;
switch ($tipo) {
case 'g': //Gigabytes
$size *= 1073741824;
break;
case 'm': //Megabytes
$size *= 1048576;
break;
case 'k': //Kilobytes
$size *= 1024;
break;
default :
$size = -1;
}
return $size;
}
# MinSize
public function _MinSize($int){
$this->_MinSize = $this->_ConvertBytes($int);
}
# MaxSize
public function _MaxSize($int){
$this->_MaxSize = $this->_ConvertBytes($int);
}
# Type
public function _Type($array){
}
$this->_Type = $array;
}
# Extencion
private function _Extencion(){
$var = explode('.',$_FILES[$this->_Name
]['name']);
}
# Validador
private function _Validator(){
# MinSize
if($this->_MinSize!==NULL && $this->_Name['size'] < $this->_MinSize){
echo 'El archivo es inferior a los $this->_MinSize bytes';
return false;
}
# MaxSize
if($this->_MaxSize!==NULL && $this->_Name['size'] > $this->_MaxSize){
echo 'El archivo es mayor a los $this->_MinSize bytes';
return false;
}
# Extencion
if($this->_Extencion
!==NULL && !in_array($this->_Extencion
,$this->_Type
)){
echo 'El archivo no es valido.';
return false;
}
# Escribir Carpeta
echo 'Lo sentimos pero no tienes permisos para escribir en $this->_Path';
return false;
}
return true;
}
# UploadSave
public function _UploadSave($name){
$this->_Extencion();
if($this->_Validator()){
return move_uploaded_file($_FILES[$this->_Name
]['tmp_name'],$this->_Path
.'/'.$name.'.'.$this->_Extencion
);
}
}
}
La forma de uso que le doy:
Código PHP:
Ver original# Upload
$Upload = new Cm_Upload;
$Upload->UploadConfig('Foto','../../Content/Merchandising');
$Upload->_Type('jpg,png,gif,bmp');
$Uploaded = $Upload->_UploadSave('Producto'.$Rand);
El problema radica en la funcion _Validator(); especificamente en esta comprobacion:
Código PHP:
Ver original# Extencion
if($this->_Extencion
!==NULL && !in_array($this->_Extencion
,$this->_Type
))
Hice un echo de $this->_Extencion y me retorna la extencion perfectamente.
Hice un echo de $this->_Type y me retorna un array, recorri ese array y esta perfecto, busque sobre el tema por sangoogle, pero no encontre nada, lo probe y lo probe pero siempre me retorna false :S cuando deberia retornar un true, alguien me podria ayudar? seria de mucha utilidad :)