Foros del Web » Programando para Internet » PHP »

mkdir()

Estas en el tema de mkdir() en el foro de PHP en Foros del Web. Hola chicos, buen día a todos, tengo este fragmento en mi código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $dirfinal = "uploads" . "/" . $titulo ...
  #1 (permalink)  
Antiguo 27/01/2014, 10:18
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
mkdir()

Hola chicos, buen día a todos, tengo este fragmento en mi código:
Código PHP:
Ver original
  1. $dirfinal = "uploads"."/".$titulo; // Guardo ruta Directorio que acabo de crear
  2. mkdir($dirfinal, 0755, true); // Directorio a crear
  3. chmod($dirfinal, 0755);
  4.  
  5. for($i=0;$i<count($_FILES['fotos']['size']);$i++){
  6.     if(strstr($_FILES['fotos']['type'][$i], 'image')!==false){
  7.         $file = $_FILES['fotos']['name'][$i];
  8.         move_uploaded_file($_FILES['fotos']['tmp_name'][$i],"uploads"."/".$titulo."/".$file);
  9.     }
  10. }
Es un upload multiple, que cada vez que sube imagenes las guarda en una carpeta nueva dentro de uploads/ el problema que tengo es que al subir pocas imágenes (menos de 10) crear la carpeta y funciona correctamente, pero al subir 30 me da el siguiente error:
Warning: mkdir(): File exists in /home/alejandr/public_html/webNueva/subir_album.php on line 30
  #2 (permalink)  
Antiguo 27/01/2014, 10:25
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: mkdir()

El archivo existe, de seguro esta pasando esto.

- Dentro de las 30 imágenes que subes, estas ingresando dos veces una misma imagen, o al menos dos con el mismo nombre.

Para ello te recomiendo que concatenes al nombre de tu imagen un rand(5, 15); por ejemplo:

Código PHP:
Ver original
  1. move_uploaded_file($_FILES['fotos']['tmp_name'][$i],"uploads"."/".$titulo."/".rand(5, 15).$file);

Espero haberte ayudado, saludos...
__________________
"Diseño de software a la medida"

http://www.sadhoc.com
  #3 (permalink)  
Antiguo 27/01/2014, 10:40
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: mkdir()

Antes que nada gracias por la sugerencia, me sigue tirando el siguiente error:
Warning: mkdir(): File exists in /home/alejandr/public_html/webNueva/subir_album.php on line 32
La línea 32 es:
Código PHP:
Ver original
  1. mkdir($dirfinal, 0755, true);
  #4 (permalink)  
Antiguo 27/01/2014, 11:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mkdir()

A ver, el error es bien claro: el archivo ya existe.

Si haces esto es normal el error:
Cita:
php > mkdir ('foo');
php > mkdir ('foo');

Warning: mkdir(): File exists in php shell code on line 1
¿Notas algo?

Es lógico que no puedes crear una carpeta dos veces, la primera vez que la creas no hay problema, pero si intentas crearla nuevamente te salta error, es bastante obvio.

¿Qué pasaría si introduces una secuencia lógica que verifique que dicha carpeta no existe para entonces crearla?

Código PHP:
Ver original
  1. if (!is_dir('foo')) {
  2.   mkdir('foo');
  3. }

Solución más lógica no puede haber.

PDTA: reflexiona bien lo que haces, tu problema era lógico, no un "error de código".
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 27/01/2014, 11:52
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: mkdir()

pateketrueke porque entonces si subo cierta cantidad de imágenes en vez de tirar el error file exists me las carga correctamente?
Ahora mi código quedó de la siguiente manera, no da error pero tampoco me crea la subcarpeta en uploads/

Código PHP:
Ver original
  1. $dirfinal = "uploads"."/".$titulo; // Guardo ruta Directorio que acabo de crear
  2.  
  3. if(!is_dir($dirfinal)){
  4.     mkdir($dirfinal, 0755, true); // Directorio a crear
  5.     chmod($dirfinal, 0755);
  6. }
  7.  
  8. for($i=0;$i<count($_FILES['fotos']['size']);$i++){
  9.     if(strstr($_FILES['fotos']['type'][$i], 'image')!==false){
  10.         $file = $_FILES['fotos']['name'][$i];
  11.         move_uploaded_file($_FILES['fotos']['tmp_name'][$i],"uploads"."/".$titulo."/".rand(5, 15).$file);
  12.     }
  13. }

Etiquetas: html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:35.