Comunidad de diseño web y desarrollo en internet online

usar función copy ()

Citar            
MensajeEscrito el 12 Ago 2011 12:19 pm
Muy buenas!

Tengo un form en el cual los usuarios suben una foto al servidor y se almacena en una carpeta (/galería).
Lo que quisiera sería una vez subida a galería copiar los archivos según como empiece su nombre, es decir, si por ejemplo tengo dentro de /galería: alberto.jpg,antonio.jpg,anna.jpg, elias.jpg,elena.jpg ,etc.. copiar los archivos que empiezan por "a" a la carpeta galeria /a , los que empiezan con "e" a la carpeta galería/e y así...
Estoy probando con la función copy pero hay problemas pues no llego a encontrar la sintaxis exacta para seleccionar las palabras que empiezan por tal letra que vayan a tal carpeta.
Con move_upload_file tampoco me acaba de salir pues ya lo uso antes para guardarlas en /galería precisamente.
Alguna ayuda o idea de como podría hacerlo?
Gracias de antemano.

Por pinakle

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ago 2011 12:30 pm
Sobre qué sistema operativo está el servidor?.

La mejor y más segura manera de hacer esto es recorriendo el directorio que te interesa.

Código PHP :

$dir = opendir("./galeria");
while (($archivo = readdir($dir)) !== false) {
//  $archivo es la variable que contiene el nombre del archivo
} // while
closedir($dir);

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 12 Ago 2011 05:42 pm
Buenas.

El servidor es remoto y sistema operativo linux.

He intentado implementar el código que tengo para que al subirlo a la carpeta galería (con un move_uploaded_file) también copie( con un copy () ) en otra carpeta el archivo dependiendo por la letra que empieza .Pero la sintaxis para que copie los archivos que empiecen por tal letra (a por ejemplo) a tal carpeta (./galeria/a por ejemplo) no consigo dar con ella.

Alguna idea de como podría ser?

Gracias

Por pinakle

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ago 2011 05:56 pm
Pues yo no veo que revista ninguna dificultad, con tal que:

Código PHP :

$letra = $nombrearchivo[0];
copy($nombrearchivo,"./galeria/".$letra."/".$nombrearchivo);


Por supuesto, tendrías además que verificar que el directorio existe, que el nombre del archivo no esté vacío, etc...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Ago 2011 10:15 am
Buenas ! Hago lo siguiente:

Declaro variables :


$letra = $_POST["nombre"]; // aquí recojo la variable letra de un formulario anterior para saber con que letra empieza la foto y hacer la comparación.

$letra = $nombrearchivo[0];

$nombrearchivo = $_SESSION[$image_session_upload_name]// variable que adopta el nombre de la foto una vez subida al servidor


Primero verifico si existe el archivo y de ser así que copie según por la letra que empieza a la carpeta que le corresponde (si empieza por "a " a la carpeta gallery/a)
$dir = opendir("./gallery");
if (($archivo = readdir($dir)) !== false) {
copy($nombrearchivo,"./gallery/".$letra."/".$nombrearchivo);


}
closedir($dir);


Me sale el siguiente error : [function.copy]: failed to open stream: No such file or directory .
He revisado la linea 130 pero algo falla en el código por favor alguna ayuda ?? Sintaxis mal empleada ?

Gracias de antemano.

Por pinakle

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Ago 2011 12:17 pm
¿El archivo fuente y el directorio destino existen?. Porque eso es lo que el mensaje de error está diciendo, que no existe el archivo que quieres copiar o no existe el directorio al cual quieres copiarlo.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Ago 2011 12:52 pm
Los directorios fuente y destino existen y con permisos 777 habilitados.
Es posible que quizá esté mal la sintaxis del código.

Para mirar si un determinado archivo empieza por una cadena en concreto hay alguna función específica?

Otra cuestión :el código que adjuntaste:

$letra = $nombrearchivo[0];

busca si la primera letra de $nombrearchivo coincide con $letra? o cual es su función?

Por pinakle

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 Ago 2011 04:24 pm
Extrae la primera letra del nombre del archivo. Un string en PHP no es más que un array de caracteres.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 26 Ago 2011 01:53 pm
Gracias por todo.

Finalmente lo he podido lograr con la función fnmatch () poniéndole la condición de que si encontraba similitudes con un if que pasará el archivo a determinada carpeta con un copy ().

Muchas gracias por todo !!

Por pinakle

13 de clabLevel



 

chrome

 

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