Foros del Web » Programando para Internet » PHP »

Problema con puntos al subir un archivo via web

Estas en el tema de Problema con puntos al subir un archivo via web en el foro de PHP en Foros del Web. . Que tal! Pues agradecería su ayuda, seguro es algo simple pero no he encontrado la solucion. Tengo una web para subir archivos menores a ...
  #1 (permalink)  
Antiguo 14/03/2013, 10:38
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Problema con puntos al subir un archivo via web

.
Que tal! Pues agradecería su ayuda, seguro es algo simple pero no he encontrado la solucion.

Tengo una web para subir archivos menores a 5MB, pero tengo un problema con los puntos intermedios.

Uso ésto para reemplazar caractéres no válidos en los nombres originales:


Código PHP:
$str explode ('.'$_FILES['archivo']['name']);
$sea=array(' ','ñ','Ñ','Á','á','É','é','Í','í','Ó','ó','Ú','ú');
$rep=array('-','n','N','A','a','E','e','I','i','O','o','U','u');
$str=str_replace($sea,$rep,$str);

$nuevonombre $str
.
Para despues extraer la extensión del archivo y mostrar que formato es:

Código PHP:
$tipo=$_FILES['archivo']['type'];

switch (
$tipo) {
 case 
'text/plain':
 
$ext='txt';
 break;
 case 
'application/zip':
 
$ext='zip';
 break;
 case 
'application/x-rar-compressed':
 
$ext='rar';
 break;
 case 
'application/octet-stream':
 
$extension_typeexplode ('.'$_FILES['archivo']['name']);
 
$extend($extension_type);
 break;
 default:
 
$ext'error';
 break;
 }
 
$solonombre=$nuevonombre[0]; 

Y el resultado:

Código PHP:
echo 'Nombre de archivo: '.$solonombre.'<br/>
Extensión: '
.$ext
.
Pero el problema es cuando archivos vienen con puntos intermedios como por ejemplo un: archivo.nuevo.txt

El resultado al subir el archivo es: archivo.txt

De que manera puedo mantener ese punto intermedio para que el resultado me dé la extensión txt pero con el nombre de achivo: archivo.nuevo?

Ya intenté condicionar el punto con el $sea como muestro arriba en el explode del nombre original pero sigue sin funcionar.

Gracias por su ayuda!

.
  #2 (permalink)  
Antiguo 14/03/2013, 10:47
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con puntos al subir un archivo via web

podrias usar strrpos

Código PHP:
Ver original
  1. $nombre_archivo = 'archivo.detalle.rar';
  2.  
  3. $posicionini = strrpos($nombre_archivo,".");
  4. echo $ext = substr($nombre_archivo,$posicionini);
  #3 (permalink)  
Antiguo 14/03/2013, 11:21
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema con puntos al subir un archivo via web

Muy util, funciona muy bien para sacar la extensión del archivo, pero el nombre no he podido sacarlo.

Es decir, como mostrar solamente: archivo.detalle

Gracias por tu ayuda.
  #4 (permalink)  
Antiguo 14/03/2013, 11:38
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Problema con puntos al subir un archivo via web

Me parece que ultimamente la gente no quiere pensar ni leer.. no te ofendas, es un divague mío, pero la verdad que te dio la solución arriba... el problema es que nunca leiste sobre las funciones strrpos y menos sobre substr... le agrego un numero y ya funciona... vamos, usa esta experiencia para acomodarte al foro y ten en cuenta que la gente no siempre te va a pasar el código exacto para que te beneficies de él, a veces solo te pasa una mano para que puedas pensarlo un poco y dar con la idea adecuada... ahora finalizando mi sermón y como tenemos nuevo Papa, me invade la bondad y te paso el codigo... el mismo que esta arriba solo le agrego una variable mas... espero haya valido la pena leer hasta aca..

Código PHP:
<?php $nombre_archivo 'archivo.detalle.rar';
 
$posicionini strrpos($nombre_archivo,".");
echo 
$ext substr($nombre_archivo,0,-4);?>
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 14/03/2013, 11:41
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema con puntos al subir un archivo via web

Otra opción es usar explode:

$archivo="hola.mundo.cruel.txt";

$nombre=explode('.',$archivo);//partimos por el punto

$ext=array_pop($nombre);//obtenemos la extension

$nombre=implode('.',$nombre);//Rehacemos el nombre tenga o no puntos.
  #6 (permalink)  
Antiguo 14/03/2013, 11:53
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema con puntos al subir un archivo via web

Cita:
Iniciado por loncho_rojas Ver Mensaje
Me parece que ultimamente la gente no quiere pensar ni leer.. no te ofendas, es un divague mío, pero la verdad que te dio la solución arriba... el problema es que nunca leiste sobre las funciones strrpos y menos sobre substr... le agrego un numero y ya funciona... vamos, usa esta experiencia para acomodarte al foro y ten en cuenta que la gente no siempre te va a pasar el código exacto para que te beneficies de él, a veces solo te pasa una mano para que puedas pensarlo un poco y dar con la idea adecuada... ahora finalizando mi sermón y como tenemos nuevo Papa, me invade la bondad y te paso el codigo... el mismo que esta arriba solo le agrego una variable mas... espero haya valido la pena leer hasta aca..

Código PHP:
<?php $nombre_archivo 'archivo.detalle.rar';
 
$posicionini strrpos($nombre_archivo,".");
echo 
$ext substr($nombre_archivo,0,-4);?>

No me ofendo, tienes la razón y cuando estamos abiertos a aprender, ningun comentario ofende, todos ayudan de algun modo u otro. De hecho es que tengo poca experiencia en PHP, puedes ver la hora de los comentarios arriba de la foto del perfil, pero checa la hora de la respuesta del amigo @informacionsys , y mi segunda duda, la diferencia de tiempo fue por pruebas que estuve haciendo para ello, pero con la poca experiencia que tengo no di con la respuesta. Un saludo y gracias, funciona perfecto, ahora combinando las dos respuestas tengo el resultado que busco. Gracias.

.
  #7 (permalink)  
Antiguo 14/03/2013, 11:57
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema con puntos al subir un archivo via web

la mejor forma de sacar la extension de un archivo es
Código PHP:
Ver original
  1. $ext = pathinfo($path_al_archivo, PATHINFO_EXTENSION);
__________________
>> abimaelmartell.com
  #8 (permalink)  
Antiguo 14/03/2013, 12:01
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema con puntos al subir un archivo via web

Cita:
Iniciado por ocp001a Ver Mensaje
Otra opción es usar explode:

$archivo="hola.mundo.cruel.txt";

$nombre=explode('.',$archivo);//partimos por el punto

$ext=array_pop($nombre);//obtenemos la extension

$nombre=implode('.',$nombre);//Rehacemos el nombre tenga o no puntos.

Despues de leer sobre explode y tambien implode, puedo entender el funcionamiento de tu solucion, aunque el amigo @loncho_rojas crea que no leo jaja, en realidad leo mucho, pero a veces siempre hace falta de los que saben para sacar la duda de nuestras fallas, ya que si no hicieran falta los que saben para los que no sabemos, nadie seria profesor en escuelas si tan solo con leer obtenemos el conocimiento, jajaja.

De lo que no conocia es sobre array_pop, ya leere al respecto para conocer mas a fondo de que se trata.

Mas que perfecto, Muchas Gracias!
  #9 (permalink)  
Antiguo 14/03/2013, 12:02
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Problema con puntos al subir un archivo via web

Interesante =D
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #10 (permalink)  
Antiguo 14/03/2013, 12:02
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Problema con puntos al subir un archivo via web

Creo que te hecharon mucha paja companero, si lo que quieres es quitar los puntos usa str_replace(),Tambien puedes obtener el nombre con str_replace(), pero como no quieres quitarlos solo cambialos o utiliza una expresion regular para quitar solo la extension:

Código PHP:
$nombre str_replace(".html"""$_FILES['imagen']['name'][0]);
$nombreSinPuntos str_replace(".","_",$nombre); 
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #11 (permalink)  
Antiguo 14/03/2013, 12:10
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Problema con puntos al subir un archivo via web

Para que puedas tener el nombre con todos los puntos que quieras en solo dos lineas de codigo lo haces asi:

Código PHP:
// suponiendo que subo un archivo html o un text con nombre mi.archivi.web.html o mi.archivo.texto.txt
$extesiones = array('/\.html$/','/\.txt$/');
$nombre preg_replace($extesiones,''$_FILES['imagen']['name'][0]); 
y ya te queda tu nombre.
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #12 (permalink)  
Antiguo 14/03/2013, 12:15
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema con puntos al subir un archivo via web

Cita:
Iniciado por Reedyseth Ver Mensaje
Para que puedas tener el nombre con todos los puntos que quieras en solo dos lineas de codigo lo haces asi:

Código PHP:
// suponiendo que subo un archivo html o un text con nombre mi.archivi.web.html o mi.archivo.texto.txt
$extesiones = array('/\.html$/','/\.txt$/');
$nombre preg_replace($extesiones,''$_FILES['imagen']['name'][0]); 
y ya te queda tu nombre.
Muy util, aunque tendría que condicionar las extensiones permitidas, que igual se me hace util pues en mi web tengo los archivos limitados a muy pocas extensiones.

Gracias!
  #13 (permalink)  
Antiguo 14/03/2013, 12:39
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Problema con puntos al subir un archivo via web

Si claro las condicionas, pero por esto es mas seguro por que asi no dejas que el usuario suba cualquier tipo de archivo !!
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.

Etiquetas: puntos
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 11:33.