Foros del Web » Programando para Internet » PHP »

No me toma la extensión del archivo

Estas en el tema de No me toma la extensión del archivo en el foro de PHP en Foros del Web. Buenas... quería pedirles ayudar porque estoy ante un problema con el cual llevo horas y no logro resolverlo! El problema es el siguiente: tengo un ...
  #1 (permalink)  
Antiguo 30/11/2008, 22:14
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Pregunta No me toma la extensión del archivo

Buenas... quería pedirles ayudar porque estoy ante un problema con el cual llevo horas y no logro resolverlo! El problema es el siguiente: tengo un formulario donde puedo subir archivos dinamicamente, con esto me refiero que, si deseo enviar un archivo, apreto agregar archivo, si deseo enviar 2, apreto 2 veces, etc. Al fin y al cabo, como el bendito GMAIL, nada nuevo!

Ahora, el problema lo tengo cuando el servidor recibe esa información enviada por el usuario. Para subir todos los archivos, utilizo un for, y creo un ID aleatorio para renombrar los archivos y guardarlos con un nombre aleatorio. La idea es que conserven la extensión que tenían cuando el usuario los suba. Para ello cree este codigo:

Código PHP:
$num count($_FILES['archivos']['name']);
      for(
$i=0$i<$num$i++)
      {        
      
$archivo$_FILES['archivos']['name'];
      
      
$id md5(uniqid(rand(), true)); 
      
      
$ext stristr($archivo,'.');
      
      
$nvo$id"."$ext ;
      
      
$ruta"../proyectos/archivos/".$nvo
      
      
move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $ruta);} 
Ahora, lo que no funciona, obviamente, es la variable $ext, pues al mover el archivo a la carpeta indicada, los archivos son guardados como: "nomrealeatorio. ", sin la extension. Es decir, crea la cadena aleatoria, pone el punto, pero no la extensión. Ya traté con otras formas para $ext, que encontré en este foro, las cuales detallo:

Código PHP:
$ext=$_FILES['tu_archivo']['type']; 
Código PHP:
$ext=pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); 
Código PHP:
$extsubstr(strrchr($chivo"."),1); 
Y en ninguno tuve exito. Lo más raro es que, en un upload comun, es decir, en un formulario donde solo envio un archivo, y no utilizo ningun for a la hora de recibir los datos, me funciona y extraigo las extensiones de los archivos. Entonces, supongo, el error debe estar provocado por el for, pero como no estoy muy familiarizado con esta función, dejo que los que saben opinen. Entonces, alguien sabe que puedo estar haciendo mal?? Alguien me pued dar una manito!??

Muchas gracias a todos, un saludo y espero poder resolver este temita!!

Pablo.

Última edición por locoxchacho; 30/11/2008 a las 22:47
  #2 (permalink)  
Antiguo 30/11/2008, 22:40
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: No me toma la extensión del archivo

La function strstr() y stristr(), toman la cadena desde donde indicas en el segundo parametro INCLUYENDO el parametro.

Ejemplo:
Si subes una imagen llamada hola.jpeg, al hacer strstr($imagen, '.');
Tomara: .jpeg
Pero luego en tu codigo cuando le asignas el nuevo nombre, pones otro PUNTO.
Entonces la imagen vendria llamandose asi: blahcasdas541..jpeg
Talvez por eso no se guarden correctamente.

Reemplaza:

Código PHP:
$nvo$id"."$ext 
Por:
Código PHP:
$nvo$id$ext 
  #3 (permalink)  
Antiguo 30/11/2008, 22:45
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: No me toma la extensión del archivo

lo he probado, y no... aparte, tampoco me sale con las otras formas que he probado, por ejemplo, la ultima, que la pruebo en un upload comun y si lo guarda...

llevo ya HORAS en frente de la PC... y no se me ocurre nada que pueda hacer para solucionarlo... alguna otra ayuda??

confío en algún ágil de mente que me pueda a ayudar, jejej!!

muchas gracias!! pablo
  #4 (permalink)  
Antiguo 30/11/2008, 23:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: No me toma la extensión del archivo

Ah, entonces es por esta linea:

Código PHP:
$archivo$_FILES['archivos']['name']; 
Se te olvido el [$i].

Código PHP:
$archivo$_FILES['archivos']['name'][$i]; 
Por eso NUNCA TOMABA LA EXTENSION.
Espero haber sido lo suficiente "agil de mente" para haberte ayudado.
  #5 (permalink)  
Antiguo 01/12/2008, 09:09
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: No me toma la extensión del archivo

ASÍ ES!!!! Ahora si me toma la solución.... sinceramente, no me había dado cuenta que faltaba... en los upload comun me tomaba la extensión, supongo, pq no era un array... la función en si funcionaba!

muchas gracias ronruby!!!
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 01:01.