Como puedo cambiar el nombre de la imagenes a subir

edited diciembre 2010 in Beta1
Buenas tardes!

Tengo una duda, resulta que estoy subiendo al servidor una imagen y estoy guardando su nombre en una bd de la siguiente manera:

Vista:
<?php echo upload_image_tag("imagen1"); ?>
<?php echo upload_image_tag("imagen2"); ?>
<?php echo upload_image_tag("imagen3"); ?>
<?php echo upload_image_tag("imagen4"); ?>

Controller:
Upload::image('imagen1');
$clasificados->imagen1 = $_FILES['imagen1']['name'];
 Upload::image('imagen2');
 $clasificados->imagen2 = $_FILES['imagen2']['name'];
  Upload::image('imagen3');
 $clasificados->imagen3 = $_FILES['imagen3']['name'];
 Upload::image('imagen4');
  $clasificados->imagen4 = $_FILES['imagen4']['name'];

Hasta ahí todo perfecto: me sube la imagen y me guarda su nombre original en la Base de Datos. La duda que tengo e saber si Kumbia tiene algún helper que me pueda ayudar a cambiar los nombres de esas imágenes aleatoriamente y que no se repitan, el problema es que estoy diseñando una aplicación para cerca de 300 usuarios en promedio y el hecho de que puedan subir imágenes con el mismo nombre y extensión me puede acarrear problemas cuando salga a producción.

Agradezco infinitamente su ayuda

Comentarios

  • edited 3:17
    hola
    para lo que quiere hacer yo lo hago con la fecha y hora en que se sube la imagen
    $extencion = strrchr($_FILES['Foto']['name'],'.');
    $renamefoto = 'Foto_'.date("Y_m_d_H_i_s").$extencion;
    $foto->foto = $renamefoto;
    Upload::image('Foto',$renamefoto)
    
    luego guardo el valor de $renamefoto en la BD

    en caso de que sean muchas imágenes para cada usuario (ejemplo: que el usuario pueda tener galería de imágenes), es mejor crear un directorio para cada usuario y ahí meter todas las imágenes de el....

    espero que le sirva
    Saludos!!

    PD: lo e usado en sistemas con mas de 5.000 usuarios y sin problema

    PD2: veo que es de Bogota, que bien <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
  • Gracias Onizukar por su ayuda, bacano encontrar gente colombiana trabajando en el framework!!! <!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Razz" /><!-- s:P -->
    Pero aún tengo una duda, seguí su consejo e hice el siguiente código:
                    $extension = strrchr($_FILES&#91;'imagen1'&#93;&#91;'name'&#93;,'&#46;');
                    $renamefoto = 'Imagen_'&#46;md5(date(&quot;Y_m_d_H_i_s&quot;))&#46;$extension;
                    $clasificados-&gt;imagen1 = $renamefoto;
                    Upload&#58;&#58;image('imagen1',$renamefoto);
    

    Me sube la imagen pero aún sigue subiéndola con su nombre original. No es claro para mi la tercer línea del ejemplo que usted me muestra, mi modelo se llama clasificados y por eso lo nombre así:
    $clasificados-&gt;imagen1 = $renamefoto;
    

    No sé que estoy haciendo mal u omitiendo.

    Muchas gracias por su ayuda.
  • edited 3:17
    Hola

    la tercera linea
    $foto-&gt;foto = $renamefoto;
    
    hace lo mismo que usted indica, $foto es mi model en mi ejemplo


    Algo debe tener mal, el método image($name, $new_name=null) es bien claro
    /**
    	 * Sube un archivo al directorio app/public/img/upload si esta en $_FILES
    	 *
    	 * @param string $name nombre del archivo en el formulario
         * @param string $new_name indica el nuevo nombre para el archivo 
    	 * @return boolean
    	 */
    	public static function image($name, $new_name=null)
        {
    		return self&#58;&#58;file_in_path($name, APP_PATH &#46; 'public/img/upload/', $new_name);
    	}
    


    si no le envía algo diferente de null no le cambia el nombre

    si le encuentra o no el error nos cuenta
    saludos
  • Hola!

    Pues he intentado modificar e código de este modo:
                    $extension = strrchr($_FILES&#91;'imagen1'&#93;&#91;'name'&#93;,'&#46;');
                    $renamefoto = 'Imagen_'&#46;md5(date(&quot;Y_m_d_H_i_s&quot;))&#46;$extension;
                    Upload&#58;&#58;image('imagen1',$renamefoto);
                    $clasificados-&gt;imagen1 = $renamefoto;
    

    Pero me sigue almacenando en la BD el nombre original de la imagen, aunque al servidor me lo sube con el nombre modificado.

    Otro tema que surge es que no puedo visualizar esas imágenes que subo a la carpeta img/upload, implemente un slider lo más de bacano que encontré en la web y trabaja con Jquery, el problema es que cuando le doy el src (lo cual hago de este modo):
    &lt;div class=&quot;reel&quot;&gt;
    					&lt;div class=&quot;slide&quot;&gt;&lt;img src=&quot;http&#58;//localhost/mimperial/img/upload/&lt;?php echo $gri-&gt;img2;?&gt;&quot; width=&quot;726&quot; height=&quot;335&quot; alt=&quot;&quot; /&gt; &lt;span&gt;Lorem Ipsum Dolor Sit Amet&#46;&lt;/span&gt; &lt;/div&gt;
    					&lt;div class=&quot;slide&quot;&gt;&lt;img src=&quot;&lt;?php echo PUBLIC_PATH ?&gt;img/ejemplo&#46;jpg&quot; width=&quot;726&quot; height=&quot;335&quot; alt=&quot;&quot; /&gt; &lt;span&gt;Mauris vitae nisl nec metus placerat consectetuer&#46;&lt;/span&gt; &lt;/div&gt;
    					&lt;div class=&quot;slide&quot;&gt;&lt;img src=&quot;&lt;?php echo PUBLIC_PATH ?&gt;img/img08&#46;jpg&quot; width=&quot;726&quot; height=&quot;335&quot; alt=&quot;&quot; /&gt; &lt;span&gt;Nam bibendum dadn nulla tortor elementum ipsum&lt;/span&gt; &lt;/div&gt;
    				&lt;/div&gt;
    
    Si usted nota la primer imagen es una que tengo subida en el servidor, las otras dos son imágenes que tengo en la raíz de la carpeta img (las cuales me las deja ver sin problema), pero la que está en upload no me la deja ver. Copio la ruta dond se encuentra la imagen y trato de abrirla en un navegador y me responde lo siguiente:

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    He de aclarar que para hacer estas pruebas de visualización guardé en el server y en la bd la imagen con el mismo nombre.

    También probé llamando a la imagen del siguiente modo:
    &lt;div class=&quot;slide&quot;&gt;&lt;img src=&quot;&lt;?php echo PUBLIC_PATH?&gt;img/upload/&lt;?php echo $gri-&gt;img4;?&gt;&quot; width=&quot;726&quot; height=&quot;335&quot; alt=&quot;&quot; /&gt; &lt;span&gt;Lorem Ipsum Dolor Sit Amet&#46;&lt;/span&gt; &lt;/div&gt;
    

    No sé si será una restricción de seguridad o algo así!

    Agradezco su amable ayuda.
  • edited 3:17
    después de hablar por el chat encotramos que el error
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    era cuestión de permisos; Aunque se le habían dado permisos 777 al directorio img/upload aparecía el error

    que ocurría?
    por cosas de la vida, había un archivo .htaccess en el directorio img/upload que se tiraba todo el asunto; Al borrar el archivo que misteriosamente estaba ahí, todo se soluciono
  • Buenos días!

    De acuerdo Onizukar!

    El archivo .htaccess estaba corrompiendo la visualización de las imágenes, al suprimirlo de la carpeta img/upload todo quedó funcionando a la perfección.

    En cuanto al tema original de esta discusión que es la asignación de nombres a la imágenes que subo al servidor he dejado el código de la siguiente manera:
                    $extension = strrchr($_FILES&#91;'imagen1'&#93;&#91;'name'&#93;,'&#46;');
                    $renamefoto = 'Imagen1_'&#46;md5(date(&quot;Y_m_d_H_i_s&quot;))&#46;$extension;
                    Upload&#58;&#58;image('imagen1',$renamefoto);
                    $clasificados-&gt;imagen1 = $renamefoto;
    

    el error radicaba en que yo llamaba de nuevo a
    $clasificados-&gt;imagen1 = $_FILES&#91;'imagen1'&#93;&#91;'name'&#93;
    
    y pues en ese caso guardaba la imagen en mi modelo con el nombre original.

    Muchas gracias a Onizukar por su colaboración, el tema ya funciona bien y lo podemos dar por cerrado.

    Mil gracias de nuevo.
Sign In or Register to comment.