Cita:
Iniciado por portalmana Para sacar en nombre de un atributo en una clase debes tener una instancia de la misma.
Supongo que en algun lugar hiciste
$instancia = new Upload_File();
en este caso como los atributos están con el modificador var por ser realizadas para php 4 equivale al modificador public de php 5 por lo cual puedes extraer el valor de cualquier variable de la siguiente forma:
$nombre = $instancia->$file_name;
Y así con cualquiera del resto de los atributos (variables).
Ahora si te refieres a este variable
$filename = basename ($this->file_name)
Lo que te queda es poner otro atributo a la clase y luego extraerlo como cualquier otro.
Código PHP:
Ver original$this->nuevoAtributo = $filename = basename ($this->file_name); // y luego como cualquier otro lo lees
echo $instancia->nuevoAtributo;
Saludos
Hola!!!
Muchas gracias por la pronta respuesta estube analizandola pero me quedan unas dudas,.. mira en este codigo, yo hice:
en donde dice
///////// AQUI LO PUSE
$this->nuevoAtributo = $filename = basename ($this->provisional_filename);
////////
Código PHP:
<?php
class Upload_File{
var $file_extensions; //Extensiones permitidas
var $type_uploads=0;//Tipo dearchivos que se subirán al server. PARA MAYOR INFORMACIÓN CONSULTAR LA TABLA
var $directory="uploads"; //Directorio donde colocaremos los archivos despues de ser subidos (uploaded). Por default llamada uploads
var $max_filesize=2097152; //Máximo tamaño que se permite en el upload, por default 2M de la configuracion por default de php.ini
var $file_type;//Tipo de archivo
var $file_name;//Nombre de archivo
var $file_size;//Tamaño del archivo
var $temp_filename;//Nombre del archivo temporal
var $file; //Nombre del archivo con todo y ruta
/*
TABLA DE VALORES DE TIPOS DE ARCHIVOS
0 = INDISTINTO TXT: text/plain
1 = IMAGENES (JPEG/PNG/GIF)
2 = DOCUMENTOS DE WORD (DOC, RTF) application/msword
3 = HOJAS DE CALCULO DE EXCEL (XLS) application/vnd.ms-excel
4 = PRESENTACIONES DE POWER POINT (PPT) application/vnd.ms-powerpoint
5 = PUBLICACIONES DE PUBLISHER application/vnd.ms-publisher
6 = ZIP FILES application/x-zip-compressed
7 = TODOS LOS ANTERIORES
*/
/*
"docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"ppt" => "application/mspowerpoint",
"pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"xls" => "application/msexcel",
"xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",*/
function Upload_File($tipo_upload=0,$path="",$max_file=""){
if (!(empty($max_file))){
$this->max_filesize=$max_file;
}
if (!(empty($path))){
$this->directory=$path;
}
//Si no existe el directorio lo creamos:
if ( (!(file_exists($this->directory))) || (!(is_dir($this->directory))) ){
mkdir($this->directory);
}
switch ($tipo_upload){ //Determinar los tipos de archivos permitidos dependiendo de la TABLA TIPOS DE ARCHIVO
/*case 0:
break; */
case 1://se subirán imágenes
//$this->file_extensions=array ("image/pjpeg","image/x-png","image/jpeg","image/png","image/gif");
$this->file_extensions=array ("image/bmp","image/gif","image/jpeg","image/pjpeg","image/png","image/x-png");
break;
case 2://se subirán documentos
$this->file_extensions=array ("image/bmp","image/gif","image/jpeg","image/pjpeg","image/png","image/x-png","application/msword","application/vnd.ms-excel","application/vnd.ms-powerpoint","application/vnd.ms-publisher","application/x-zip-compressed","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
break;
}
$this->type_uploads=$tipo_upload;
}
function PutFileUploaded($file){
$validated=FALSE;
//Validar si el archivo existe en la matriz $_FILES
if (!(isset($_FILES[$file]))){
$this->onError(1);
}
//Guardar como atributo del objeto nombre del archivo, tamaño y nombre del temporal
$this->file_type = $_FILES[$file]['type'];
$this->file_name = $_FILES[$file]['name'];
$this->file_size = $_FILES[$file]['size'];
$this->temp_filename = $_FILES[$file]['tmp_name'];
//Validar el tamaño del archivo
if ( ($this->file_size <= 0) || ($this->file_size > $this->max_filesize) ){
$this->onError(2);
}
//Validar de acuerdo al tipo permitido de archivos correspone al que se pretende subir
switch ($this->type_uploads){ //Determinar los tipos de archivos permitidos dependiendo de la TABLA TIPOS DE ARCHIVO
/* case 0:
$validated=true; //No hay regla de validación por lo tantoo automáticamente es válido
break; */
case 1://se busca que el tipo de archivo concuerde con el tipo 1 (IMAGENES)
foreach ($this->file_extensions as $extension){
if ($extension == $this->file_type){
$validated=true;
break;
}
}
break;
case 2://se busca que el tipo de archivo concuerde con el tipo 2 (DOCUMENTOS)
foreach ($this->file_extensions as $extension){
if ($extension == $this->file_type){
$validated=true;
break;
}
}
break;
}
if ($validated){// Si paso la prueba de validación
$filename = basename ($this->file_name); //Obtener el nombre del archivo
$this->file = $this->directory . "/". $filename; //Formar la cadena del Archivo con todo y ruta
$this->file=str_replace(" ","_",$this->file);//Reemplazamos los espacios en blanco por guiones bajos.
//Si ya hay un archivo con ese nombre lo renombramos
if (file_exists($this->file)){
list($path_and_file,$extension) = explode(".",$this->file); //Separamos el nombre del archivo archivo en partes
$unique=false;
$iteration=1;
while (!($unique)){ //Realizaremos el ciclo hasta encontrar un nuevo nombre de archivo mas un consecutivo
$provisional_filename=$path_and_file . "_" . $iteration . ".". $extension;
if (!(file_exists($provisional_filename))){//Si en esa iteración el nombre de archivo provisonal dado no existe,asignarlo a como nombre definitvo de archivo
$this->file=$provisional_filename;
$unique=true;
}//Si no seguimos iterando hadta encontrar el nombre unico
$iteration++;
}
}
if(is_uploaded_file($this->temp_filename)){ //Si el archivo es un upload entonces se procede a moverlo
///////// AQUI LO PUSE
$this->nuevoAtributo = $filename = basename ($this->provisional_filename);
////////
if (@move_uploaded_file($this->temp_filename,$this->file)){ //Si se movió correctamente regresar el nombre del archivo
return $this->file;
}
else{
$this->onError(5);
}
}
else{
$this->onError(4);
}
}
else{
$this->onError(3);
}
}
function onError($errorcode){
switch ($errorcode){
case 1://No existe el archivo en $_FILES[]
exit("<i>No se ha subido un archivo con el identificador dado para la funcion PutFileUploaded.</i>");
case 2://El tamaño del archivo es muy grande o no contiene nada
exit("<i>No se ha podido subir el archivo porque excede del tamaño permitido.</i>");
case 3: //El tipo de archivo no es váliddo. No tiene permiso opara subir ese tipo de archivos
exit("<i>No se ha podido subir el archivo porque el tipo no está autorizado.</i>");
case 4: //El archivo dado no fue subido al server a través de un upload de HTTP
exit("<i>Operación no válida porque el archivo dado no fue subido vía HTTP.</i>");
case 5: //El archivo no pudo ser movido al directorio deseado
exit("<i>Operación no válida porque no se ha podido guardar el archivo.</i>");
}
}
}
?>
en donde dice
///////// AQUI LO PUSE
$this->nuevoAtributo = $filename = basename ($this->provisional_filename);
////////
esta lo que me dijiste segun la variable que creo yo ya tiene el nombre final..
y en la parte donde imprimo y quiero guardarlo en mi bd, la cual obviamente no esta dentro de la clase puse como dijiste:
echo $instancia->nuevoAtributo;
pero no me trae nada :S
esta bien lo que hice y donde lo puse ??
espoer me puedas ayudar amigos porfavor!!!!!
gracias!!