Foros del Web » Programando para Internet » PHP »

Cambiar puntos por guiones al subir archivo.

Estas en el tema de Cambiar puntos por guiones al subir archivo. en el foro de PHP en Foros del Web. Hola. Mi problema es el siguiente. Tengo un upload de archivos personal, que uso para las imágenes de mi web. Actualmente al subir una imagen ...
  #1 (permalink)  
Antiguo 19/12/2011, 18:55
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 12 años, 10 meses
Puntos: 3
Cambiar puntos por guiones al subir archivo.

Hola.
Mi problema es el siguiente. Tengo un upload de archivos personal, que uso para las imágenes de mi web. Actualmente al subir una imagen normal, el nombre queda asi:
http://miweb.es/images/1/imagen%norm...g-dgf54jkh.png

los % es porque el nombre de la imagen tiene un espacio, y después, hay un . antes de la extension.

Yo quiero que quede así.
http://miweb.es/images/1/imagennorma...g-dgf54jkh.png

Es decir, que los espacios desaparezcan y el . de la extensión png, que es parte del nombre del archivo, se cambie por un guion.

El código que uso lo saqué de un post de por quí, es este:
Código:
<?  
if($_POST){ 
// Creamos la cadena aletoria 
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 
$cad = ""; 
for($i=0;$i<12;$i++) { 
$cad .= substr($str,rand(0,62),1); 
} 
// Fin de la creacion de la cadena aletoria 
$tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero 
$tamaño_max="50000000000"; // Tamaño maximo permitido 
if( $tamano < $tamaño_max){ // Comprovamos el tamaño  
$destino = 'images/1' ; // Carpeta donde se guardata 
$sep=explode('image/',$_FILES["file"]["type"]); // Separamos image/ 
$tipo=$sep[1]; // Optenemos el tipo de imagen que es 
if($tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "jpg" || $tipo == "x-png" || $tipo == "jpeg" || $tipo == "png" || $tipo == "psd"){ // Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen 
move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$_FILES [ 'file' ][ 'name' ].'-'.$cad.'.'.$tipo);  // Subimos el archivo 
include('subido.php'); // Incluimos la plantilla 
} 
else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo desimos 
} 
else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo desimos 
} 
?>
  #2 (permalink)  
Antiguo 19/12/2011, 18:58
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Cambiar puntos por guiones al subir archivo.

Con la funcion str_replace podés reemplazar caracteres en una cadena
__________________
la la la
  #3 (permalink)  
Antiguo 19/12/2011, 18:59
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Cambiar puntos por guiones al subir archivo.

Creo que me expliqué medio mal :P

Sólo quiero que al NOMBRE del archivo subido:
.$_FILES [ 'file' ][ 'name' ].
Los espacios se eliminen y los puntos se reemplazen por guiones.


Muchas graacias.
  #4 (permalink)  
Antiguo 19/12/2011, 19:00
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Cambiar puntos por guiones al subir archivo.

str_replace("reemplaza esto","por esto",$en_esta_cadena)
__________________
la la la
  #5 (permalink)  
Antiguo 19/12/2011, 19:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cambiar puntos por guiones al subir archivo.

Cita:
Iniciado por Kilin Ver Mensaje
Creo que me expliqué medio mal :P [...]
Para nada te explicaste mal, y desde luego la respuesta que te dieron es 100% válida.

La función str_replace() sirve para reemplazar caracteres de cadenas de texto, el nombre del archivo es por supuesto una cadena de texto.

¿Que parte es la que no se ajusta?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 19/12/2011, 19:00
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Cambiar puntos por guiones al subir archivo.

Cita:
Iniciado por truman_truman Ver Mensaje
Con la funcion str_replace podés reemplazar caracteres en una cadena

Me lo leeré, pero soy medio duro :p

A mí si no me explican como para bobo no entiendo.
  #7 (permalink)  
Antiguo 20/12/2011, 10:08
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Cambiar puntos por guiones al subir archivo.

Parezco tonto pero no lo entendí.

Código:
<?  
if($_POST){ 
// Creamos la cadena aletoria 
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 
$cad = ""; 
for($i=0;$i<12;$i++) { 
$cad .= substr($str,rand(0,62),1); 
} 
// Fin de la creacion de la cadena aletoria 
$tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero 
$tamaño_max="50000000000"; // Tamaño maximo permitido 
if( $tamano < $tamaño_max){ // Comprovamos el tamaño  
$destino = 'images/1' ; // Carpeta donde se guardata 
$sep=explode('image/',$_FILES["file"]["type"]); // Separamos image/ 
$tipo=$sep[1]; // Optenemos el tipo de imagen que es 
if($tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "jpg" || $tipo == "x-png" || $tipo == "jpeg" || $tipo == "png" || $tipo == "psd"){ // Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen 
move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$_FILES [ 'file' ][ 'name' ].'-'.$cad.'.'.$tipo);  // Subimos el archivo 
include('subido.php'); // Incluimos la plantilla 
} 
else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo desimos 
} 
else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo desimos 
} 
?>
dodne pongo la funcion str_replace ahi?
  #8 (permalink)  
Antiguo 20/12/2011, 11:20
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 2 meses
Puntos: 12
Respuesta: Cambiar puntos por guiones al subir archivo.

Cita:
Iniciado por Kilin Ver Mensaje
dodne pongo la funcion str_replace ahi?
Intenta así quizás que te funciona....

Código PHP:
Ver original
  1. <?php
  2. // Esta función la acabo de hacer no soy experto en PHP
  3. // Y a veces al código, lo hago más complicado de lo que debiera.
  4. // Quizás algún genio de los tantos que hay en el foro lo pueda realizar mejor
  5. // Estoy aprendiendo también sepan disculpar y espero que te sirva.
  6.  
  7. function removeExt($text){
  8.     $ext = strrchr($text, ".");
  9.     $n = strlen($ext)+1;   
  10.     $cadena_final = substr($text, 0, -$n);
  11.     $replace = str_replace(' ', '-', $cadena_final);
  12.     return $replace;
  13. }
  14.  
  15. if($_POST){
  16. // Creamos la cadena aletoria
  17. $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  18. $cad = "";
  19. for($i=0;$i<12;$i++) {
  20. $cad .= substr($str,rand(0,62),1);
  21. }
  22. // Fin de la creacion de la cadena aletoria
  23. $tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero
  24. $tamaño_max="50000000000"; // Tamaño maximo permitido
  25. if( $tamano < $tamaño_max){ // Comprovamos el tamaño  
  26. $destino = 'images/1' ; // Carpeta donde se guardata
  27. $sep=explode('image/',$_FILES["file"]["type"]); // Separamos image/
  28. $tipo=$sep[1]; // Optenemos el tipo de imagen que es
  29. if($tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "jpg" || $tipo == "x-png" || $tipo == "jpeg" || $tipo == "png" || $tipo == "psd"){ // Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen
  30. move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .removeExt($_FILES [ 'file' ][ 'name' ]).'-'.$cad.'.'.$tipo);  // Subimos el archivo
  31. include('subido.php'); // Incluimos la plantilla
  32. }
  33. else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo desimos
  34. }
  35. else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo desimos
  36. }
  37. ?>

Repito no soy experto ...disculpa si está mal.

Saludos

Última edición por MaxDgy; 20/12/2011 a las 11:51
  #9 (permalink)  
Antiguo 20/12/2011, 12:34
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Cambiar puntos por guiones al subir archivo.

$nombre_archivo = $_FILES['archivo']['name'];
$nombre_archivo = str_replace(" ","_",$nombre_archivo);


esto te reemplaza un espacio por un guión bajo, a ver si podes razonar, Donde iría entonces?
__________________
la la la
  #10 (permalink)  
Antiguo 20/12/2011, 17:06
 
Fecha de Ingreso: junio-2011
Mensajes: 92
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Cambiar puntos por guiones al subir archivo.

Muchas gracias, ya lo conseguí, lo dejé asi:
Código:
<?  
if($_POST){ 
// Creamos la cadena aletoria 
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 
$cad = ""; 
for($i=0;$i<12;$i++) { 
$cad .= substr($str,rand(0,62),1); 
} 
// Fin de la creacion de la cadena aletoria 
$tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero 
$tamaño_max="50000000000"; // Tamaño maximo permitido 
if( $tamano < $tamaño_max){ // Comprovamos el tamaño  
$destino = 'images/1' ; // Carpeta donde se guardata 
$sep=explode('image/',$_FILES["file"]["type"]); // Separamos image/ 
$name=$_FILES['file']['name']; // Separamos nombre/ 
$name2 = str_replace(" ","_", $name);
$nombre = str_replace(".","_", $name2);
$tipo=$sep[1]; // Optenemos el tipo de imagen que es 
if($tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp" || $tipo == "jpg" || $tipo == "x-png" || $tipo == "jpeg" || $tipo == "png" || $tipo == "psd"){ // Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen 
move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$nombre.'_'.$cad.'.'.$tipo);  // Subimos el archivo 
include('subido.php'); // Incluimos la plantilla 
} 
else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo desimos 
} 
else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo desimos 
} 
?>

Etiquetas: puntos, guion
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 17:10.