Comunidad de diseño web y desarrollo en internet online

Actualizar DB desde FTP mediante una funcion en PHP

Citar            
MensajeEscrito el 01 May 2009 11:54 pm
Buenos dias, un cliente quiere subir una carpeta "Album" en el ftp con sus correspondientes archivos en una carpeta predeterminada y yo mediante php tengo que consultar si hay una carpeta nueva y si existe.. cargar los archivos de adentro en la DB.

estoy viendo funciones como ftp_nlist(), que me dan la lista de archivos de un directorio determinado....

la pregunta es.. me conviene usar FTP o usar otras funciones que vi por ahi.. como dir() y glob() ???

la unica manera de que se ejecute la funcion php creada por mi es llamandola mediante un click? o tambien se me ocurrio ponerla oculta en una web y que todas las veces que ingrese consulte pero capaz que es un gasto de recursos inecesario.. slds gracias!

Por matuteworld

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 May 2009 12:08 am

Por tribak

Claber

2448 de clabLevel

6 tutoriales

Genero:Masculino   Héroes

Fotógrafo o algo

firefox
Citar            
MensajeEscrito el 02 May 2009 02:44 am
muchas gracias... lo hice parecido a ese tuto.. con unas cuantas mejoras en validacion.. y guardando los datos en una db.. osea que cada carpeta creada sea un album y cada archivo dentro de esa carpeta es una foto.. la idea es tomar esas tablas desde flash con sendAndLoad.

Por matuteworld

28 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 May 2009 04:00 am
codeigniter tiene una clase espectacular para eso, si no te animas a usar el framework te recomiendo que busques alguna clase para conectarte via ftp busca aca siempre hay clases interesantes http://www.phpclasses.org/

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 02 May 2009 04:28 am
mejor usa esto :

dir - > para listas los archivos
is_dir -> para saber si es una carpeta
si tienen extencion es porque es un archivo es basico

para saber si hay una carpeta nueva colocale una marca puede ser upload_x es decir por cada paquete nuevo cambias la x por un numero y luego si haces la insercion a la base de datos saludos y espero te sirva

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 04 May 2009 08:31 am
Buenos dias te muestro lo que hice.. anda bien.. pero capaz podrian aconsejarme algo... con el tema de ahorro de recursos.. pero anda perfecto... slds!

Código :

<?php
header('Content-Type: text/html; charset=UTF-8');

include('conexion.php');
$conexion = mysql_connect ($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname) or die('Cannot select database');
mysql_query("SET NAMES utf8");

$fecha = date('Y-m-d G:i:s');

if ($gestor = opendir('/AppServ/www/FTP_Fotos/Albums')) {
    echo "Directorios:<br>";

    /* Esta es la forma correcto de iterar sobre el directorio. */
    while (false !== ($dir = readdir($gestor))) {
      if(is_dir('/AppServ/www/FTP_Fotos/Albums/'.$dir)){
         $dir = utf8_encode($dir);
         if ($dir != '.' && $dir != '..' && $foto != 'Thumbs.db') {
            $cons_dir = mysql_query("SELECT * FROM albums WHERE borrado = 'NO' AND direccion = '$dir'", $conexion);
            if (!mysql_fetch_assoc($cons_dir)){
               mysql_query("INSERT INTO albums (titulo, direccion, fecha) VALUES ('$dir', '$dir', '$fecha')", $conexion);
               echo "<strong>$dir</strong><br>";
   
               $cons_album = mysql_query("SELECT LAST_INSERT_ID()", $conexion);
               $reg_album = mysql_fetch_assoc($cons_album);
               $album = $reg_album['LAST_INSERT_ID()'];
               cargar_fotos($album, $dir);
            } else {
               echo "$dir<br>";         
            }
         }
      }
    }
    closedir($gestor);
}

function cargar_fotos($album, $dir){
   global $conexion, $fecha;
      
   $dir = '/AppServ/www/FTP_Fotos/Albums/'.$dir;
   $dir = utf8_decode($dir);
   if ($gestor = opendir($dir)) {
      echo "Fotos:<br>";
   
      while (false !== ($foto = readdir($gestor))) {
         if(is_file($dir.'/'.$foto) && validar_foto($foto)){
            $foto = utf8_encode($foto);
            if ($foto != '.' && $foto != '..' && $foto != 'Thumbs.db') {
               mysql_query("INSERT INTO fotos (album, direccion, fecha) VALUES ('$album', '$foto', '$fecha')", $conexion);
               echo "$dir/$foto<br>";
            }
         }
      }
      closedir($gestor);
   }
}

function validar_foto($foto){
   $foto = strtolower($foto);
   $extencion = substr($foto, -3, 3);
   if ($extencion == 'jpg' || $extencion == 'png' || $extencion == 'gif' || $extencion == 'bmp'){
      return TRUE;
   } else {
      return FALSE;         
   }
}

?>

Por matuteworld

28 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.