Foros del Web » Programando para Internet » PHP »

Cambiar el nombre a una imagen antes de subirla

Estas en el tema de Cambiar el nombre a una imagen antes de subirla en el foro de PHP en Foros del Web. Hola, por favor quiero saber como cambiar el nombre a una imagen porque al insertarla en la base de datos siempre me la ingresa con ...
  #1 (permalink)  
Antiguo 30/04/2013, 16:54
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Cambiar el nombre a una imagen antes de subirla

Hola, por favor quiero saber como cambiar el nombre a una imagen porque al insertarla en la base de datos siempre me la ingresa con el mismo nombre.

index.html

Código HTML:
Ver original
  1. <form action="upload_documentos.php" method="post" enctype="multipart/form-data" id="form1" name="form1" data-ajax="false">
  2.  
  3.                 <div class="ui-bar-b ui-corner-all ui-shadow" style="padding:1em;max-width:600px" data-role="collapsible-set" data-content-theme="b">                  
  4.  
  5.                     <div data-role="collapsible" data-collapsed="false">                  
  6.  
  7.                         <h3>Documento</h3>
  8.  
  9.                         <!-- Titulo  -->                    
  10.  
  11.                         <div style="clear:both;height:50px">
  12.  
  13.                             <div style="text-align:left;float:left;width:30%;padding-top:5px">
  14.  
  15.                                 Título                            </div>
  16.  
  17.                             <div style="float:left;width:70%">
  18.                            
  19.           <input type="hidden" name="id_aviso" id="id_aviso" value="<?php echo $row_Recordset1['id_aviso']; ?>" />
  20.          
  21.          <input data-theme="b"  name="archivo_titulo" id="archivo_titulo" type="text"  />
  22.  
  23.                             </div>
  24.  
  25.                         </div>  
  26.  
  27.      
  28.  
  29.                         <!-- Descripcion  -->                    
  30.  
  31.                         <div style="clear:both;height:50px">
  32.  
  33.                             <div style="text-align:left;float:left;width:30%;padding-top:5px">
  34.  
  35.                                 Descripción                            </div>
  36.  
  37.                             <div style="float:left;width:70%">
  38.  
  39.        <input data-theme="b"  name="archivo_descripcion" id="archivo_descripcion" type="text"/>
  40.  
  41.                             </div>
  42.  
  43.                         </div>
  44.  
  45.                        
  46.  
  47.                         <!-- archivo  -->                    
  48.  
  49.                         <div style="clear:both;height:50px">
  50.  
  51.                             <div style="text-align:left;float:left;width:30%;padding-top:5px">
  52.  
  53.                                 Archivo                            </div>
  54.  
  55.                             <div style="float:left;width:70%">
  56.  
  57.                 <input data-theme="b" name="archivo" id="archivo" type="file" />
  58.  
  59.                             </div>
  60.  
  61.                         </div>
  62.  
  63.                         <input type="hidden" name="operacion" id="operacion" />
  64.  
  65.                         <input type="button" name="guardar" id="guardar" value="Adjuntar" onclick="comprobarDatosFormulario()" />
  66.  
  67.                     </div>
  68.  
  69.                     <div data-role="collapsible" data-collapsed="true" data-theme="a" data-content-theme="c">
  70.  
  71.                                                     <h3> Documentos asociados</h3>
  72.  
  73.                            
  74.  
  75.                             <br /><ul data-role="listview" data-theme="b" data-inset="true" data-filter="true"></ul>                    </div>
  76.  
  77.                 </div>
  78. <input type="hidden" name="MM_insert" value="form1" />
  79.             </form>


upload.php

Código PHP:
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre.  Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
if (empty($_FILES['archivo']['name'])){
header("location: adjuntardocumento.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}

//establece una conexión con la base de datos.
$conexion mysql_connect("localhost","","") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("Tabla",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];
$archivo_titulo=$_POST['archivo_titulo'];
$archivo_descripcion=$_POST['archivo_descripcion'];
$id_aviso=$_POST['id_aviso'];



move_uploaded_file($_FILES['archivo'] ['tmp_name'], "imagenes_archivos/".$_FILES['archivo']['name']);

$destino "http://www.miweb.es/imagenes_archivos/".$binario_nombre;



//insertamos los datos en la BD.
$consulta_insertar "INSERT INTO archivos (id,id_aviso,archivo_titulo,archivo_descripcion, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('','$id_aviso','$archivo_titulo','$archivo_descripcion','$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");

?>

Gracias
  #2 (permalink)  
Antiguo 30/04/2013, 16:57
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 el nombre a una imagen antes de subirla

Pues en lugar de usar el nombre que recibes del archivo debes colocar el nombre que quieras, ¿no te parece?

Código PHP:
$binario_nombre='foo.candy-bar'
Ahora, que si el problema es la extensión puedes consultar en el manual sobre funciones para extraer la extensión, o bien, usar funciones de cadenas de texto para extraer la extensión manualmente y al final agregarla.

En el manual está todo bien documentado, investiga.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/04/2013, 17:03
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Cambiar el nombre a una imagen antes de subirla

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues en lugar de usar el nombre que recibes del archivo debes colocar el nombre que quieras, ¿no te parece?

Código PHP:
$binario_nombre='foo.candy-bar'
Ahora, que si el problema es la extensión puedes consultar en el manual sobre funciones para extraer la extensión, o bien, usar funciones de cadenas de texto para extraer la extensión manualmente y al final agregarla.

En el manual está todo bien documentado, investiga.
El problema solo lo tengo cuando inserto fotos desde el iphone porque siempre se llaman image.jpg. Entonces como cambiaria ese nombre antes de hacer el insert?

Gracias por contestar.
  #4 (permalink)  
Antiguo 30/04/2013, 17:06
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 el nombre a una imagen antes de subirla

Ahh, vaya, si no explicas esa parte ¿cómo íbamos a adivinar?

Pues igual puedes hacer una comparación, ¿no te parece?

No entiendo la dificultad.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/04/2013, 17:14
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Cambiar el nombre a una imagen antes de subirla

Cita:
Iniciado por pateketrueke Ver Mensaje
Ahh, vaya, si no explicas esa parte ¿cómo íbamos a adivinar?

Pues igual puedes hacer una comparación, ¿no te parece?

No entiendo la dificultad.
Quieres decir:

Código PHP:
if($binario_nombre='image.jpg'){

    }else{
        
        
move_uploaded_file($_FILES['archivo'] ['tmp_name'], "imagenes_archivos/".$_FILES['archivo']['name']);


//insertamos los datos en la BD.
$consulta_insertar "INSERT INTO archivos (id,id_aviso,archivo_titulo,archivo_descripcion, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('','$id_aviso','$archivo_titulo','$archivo_descripcion','$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
    } 
Gracias
  #6 (permalink)  
Antiguo 01/05/2013, 04:04
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Cambiar el nombre a una imagen antes de subirla

Lo estoy intentando llevando el archivo a otro donde lo renombro y si lo hace pero cuando lo llevo a upload.php me dice que no existe el fichero.

renombrar.php

Código PHP:
<?php

$archivo
=$_POST['archivo'];

//GENERADOR DE CODIGOS ALEATORIOS
    
$str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
    
$cad "";
    for(
$i=0;$i<15;$i++) {
    
$cad .= substr($str,rand(0,62),1);  
    }
/*con eso generas una cadena casi irrepetible de 15 digitos aleatorios y lo puedes configurar a gusto
ahora solo quedaría agregarlo a tu imagen....
por ejemplo
*/
$archivo = ("$cad".$_FILES['archivo']['name']);
//y ya se renombra
//ahora si quieres hacer un poco mas optima la subida te aconsejaria quitar caracteres especiales y demás.... te paso una funcion
?>
<?php
function replace_filename($str,$min 0) {
    
$str ereg_replace("[^a-zA-Z0-9.()]",'_',$str);
    return (
$min == 1) ? strtolower($str) : $str;

 
//y después solo aplicamos
$archivo replace_filename($archivo);


?>

            <form action="upload.php" method="post" enctype="multipart/form-data" id="form1" name="form1" data-ajax="false">

            
                            <div style="text-align:left;float:left;width:30%;padding-top:5px">

                                Archivo   </div>
                            <div style="float:left;width:70%">

                  <input type="text" name="archivo" id="archivo" value="<?php echo $archivo ?>" />
  

                            </div>

                       </div>

                           

                        <input type="button" name="guardar" id="guardar" value="Adjuntar" onclick="comprobarDatosFormulario()" />

                    </div>

            </form>
Gracias

Etiquetas: formulario, html, mysql, nombre, select, tabla
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 04:14.