• Miércoles 24 de Abril de 2024, 20:40

Autor Tema:  Hacer Un Host De Imagenes  (Leído 3492 veces)

Krosty

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Hacer Un Host De Imagenes
« en: Jueves 25 de Octubre de 2007, 01:56 »
0
Bueno, estaba practicando y tengo una duda.
Código: Text
  1. <html>
  2. <head>
  3. <title>Problema</title>
  4. </head>
  5. <body>
  6. <?php
  7. copy($_FILES['foto']['tmp_name'],$_FILES ['foto']['name']);
  8. echo "Se subio.<br>";
  9. $fot1=$_FILES['foto']['name'];
  10. echo "<img src=\"$fot1\">";
  11. echo "<br>";
  12. echo "<br>";
  13. echo "Para insertar esta imagen:";
  14. ?>
  15. </body>
  16. </html>
  17.  

Bien lo que hace esto es guardar la imagen en el directorio local y mostrarlo en esa web.
Ahora me gustaria que en texto muestre la ruta de la imagen, pero nose como hacerlo :S ya que lo unico que veo es
Código: Text
  1. <img src=\"$fot1\">"
  2.  
par amostrar imagen, pero no para mostarlo tipo texto.
Entonces alguna idea para mostrar la ruta de la imagen ? Cosa de que una persona suba la foto y la pueda postear en un foro por ejemplo.
Y de paso a que viene esto aca: "<img src=\"$fot1\">"

Salu2 gracias

-DriverOp-

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Hacer Un Host De Imagenes
« Respuesta #1 en: Jueves 25 de Octubre de 2007, 04:06 »
0
Cuando dices "ruta de la imagen" ¿te refieres a la URI de la imagen?, onda http://www.example.com/imagen.jpg

Krosty

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Hacer Un Host De Imagenes
« Respuesta #2 en: Jueves 25 de Octubre de 2007, 04:37 »
0
Exacto.
Cosa de que el user que sube la imagen le diga la ruta ahi en pantalla sin tener que hacer clik derecho / propiedades en la imagen.
Salu2

venedan

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: Hacer Un Host De Imagenes
« Respuesta #3 en: Jueves 25 de Octubre de 2007, 05:14 »
0
pues mas facil todavia si el directorio de la pagina es donde esta la pagina haces un echo donce se muestre el nombre de tu pagina www.ejemplo.com/ y lo concatenas con el nombre y la extension del archivo

-DriverOp-

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Hacer Un Host De Imagenes
« Respuesta #4 en: Jueves 25 de Octubre de 2007, 15:09 »
0
Ah, tiene que ver la URI completa hacia la imagen, ok...
Código: Text
  1.  
  2. &#60;?php
  3. function ObtenerURIBase() {
  4.   &#036;host  = &#036;_SERVER['HTTP_HOST'];
  5.   &#036;uri  = rtrim(dirname(&#036;_SERVER['PHP_SELF']), '/&#092;&#092;');
  6.   &#036;base = &#34;http://&#34; . &#036;host . &#036;uri . &#34;/&#34;;
  7.   return &#036;base;
  8. }
  9. ?&#62;
  10. &#60;html&#62;
  11. &#60;head&#62;
  12. &#60;title&#62;Problema&#60;/title&#62;
  13. &#60;/head&#62;
  14. &#60;body&#62;
  15. &#60;?php
  16. copy(&#036;_FILES['foto']['tmp_name'],&#036;_FILES ['foto']['name']);
  17. echo &#34;Se subio.&#60;br&#62;&#34;;
  18. &#036;fot1=&#036;_FILES['foto']['name'];
  19. echo &#34;&#60;img src=&#092;&#34;&#036;fot1&#092;&#34;&#62;&#34;;
  20. echo &#34;&#60;br&#62;&#34;;
  21. echo &#34;&#60;br&#62;&#34;;
  22. echo &#34;Para insertar esta imagen:&#34;.ObtenerURIBase().&#036;fot1;
  23. ?&#62;
  24. &#60;/body&#62;
  25. &#60;/html&#62;
  26.  
  27.  

Lo que hace la función es tomar el dominio del sitio; el path del script actual del cual extrae el o los directorios anidados quitándole la barra final y luego arma una URL válida con todo eso.

Krosty

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Hacer Un Host De Imagenes
« Respuesta #5 en: Sábado 27 de Octubre de 2007, 04:31 »
0
Buenisimo y alo probe y va de diez, graicas ;)
Una pregunta esto que hace:
Código: Text
  1. rtrim(dirname(&#036;_SERVER['PHP_SELF']), '/&#092;&#092;');
  2.  
  3.  
Y como se podria hacer para que si existe una imagen con el nombre a subir, le cambie el nombre?
Es decir si subo jaja.jpg y subo otro jaja.jpg, que le ponga jaja1.jpg ?
Salu2
gracias

-DriverOp-

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Hacer Un Host De Imagenes
« Respuesta #6 en: Sábado 27 de Octubre de 2007, 05:21 »
0
Krosty:
Citar
Una pregunta esto que hace:
Código: Text
  1. rtrim(dirname(&#036;_SERVER['PHP_SELF']), '/&#092;&#092;');
  2.  
  3.  
$_SERVER['PHP_SELF'] devuelve la ruta local más el nombre del script que se está ejecutando actualmente relativo al home virtual en el servidor, por ejemplo si la URL del script es: http://www.example.com/dir1/dir2/script.php $_SERVER['PHP_SELF'] contiene dir1/dir1/script.php

dirname() extrae el path de la cadena pasada como parámetro, como esa cadena contiene $_SERVER['PHP_SELF'] entonces devuelve dir1/dir1

rtrim() borra caracteres por la derecha (es decir por el final de la cadena), en este caso elimina la barra final de lo que devuelve dirname(), esto lo hice para prevenir que apareza una doble barra cuando el script está en el home, en ese caso dirname devuelve "/" lo que causaría una doble barra en la URL después.

Para ver si un archivo ya existe podrías hacer algo así:
Código: Text
  1.  
  2. if (is_file(&#34;jaja.jpg&#34;)) { echo &#34;El archivo ya existe&#34;; }
  3. else { echo &#34;El archivo no existe&#34;; }
  4.  
  5.  

Para asignar un nuevo nombre de archivo a un nuevo archivo cuyo nombre ya existe podrías hacer algo como esto:
Código: Text
  1.  
  2. function getFileExtension(&#036;str) {
  3.  
  4.         &#036;i = strrpos(&#036;str,&#34;.&#34;);
  5.         if (!&#036;i) { return &#34;&#34;; }
  6.  
  7.         &#036;l = strlen(&#036;str) - &#036;i;
  8.         &#036;ext = substr(&#036;str,&#036;i+1,&#036;l);
  9.  
  10.         return &#036;ext;
  11. } // getFileExtension
  12.  
  13. function getFileName(&#036;str) {
  14.         &#036;i = strrpos(&#036;str,&#34;.&#34;);
  15.         if (!&#036;i) { return &#34;&#34;; }
  16.         return substr(&#036;str,0,&#036;i);
  17. } // getfilename
  18.  
  19. &#036;archivo = &#036;_FILES ['foto']['name']; // agregado según tu código.
  20. if (is_file(&#036;archivo)) {
  21.   &#036;a = 0;
  22.   do {
  23.     &#036;a++;
  24.     &#036;archivo = GetFileName(&#036;archivo).&#036;a.&#34;.&#34;.GetFileExtension(&#036;archivo);
  25.   } while (is_file(&#036;archivo));
  26. }
  27. echo &#036;archivo;
  28.  
  29.  
En $archivo tendrás el nuevo nombre.

Seguramente alguien más tiene una solución mejor.