Foros del Web » Programando para Internet » PHP »

Subir Imagen a registro (pero no a BD)

Estas en el tema de Subir Imagen a registro (pero no a BD) en el foro de PHP en Foros del Web. Amigos de Foros del Web... Hace un tiempo que hice una pregunta en el foro, pero entre examenes, y que mucho no entendi, me deje ...
  #1 (permalink)  
Antiguo 11/10/2008, 18:46
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Subir Imagen a registro (pero no a BD)

Amigos de Foros del Web...

Hace un tiempo que hice una pregunta en el foro, pero entre examenes, y que mucho no entendi, me deje estar...

Ahora vuelvo al ruedo luego de los parciales, y vuelvo a hacer mi pregunta:

Yo tengo una tabla en una BD, donde quiero que a cada registro le corresponda una imagen... Ahora, yo tengo un formulario de insercion de registros mediante la web.. ahora, mi comnsulta es la siguiente:

a) como hago para agregar una imagen al registro
b) y como hago para que esa imagen no se suba a la BD, sino a una carpeta especifica de la web?

es algo facil.. pero que nunca entendi como se hace. Si algun alma caritativa me puede ayudar, desde ya! muchas gracias!

Cualquier cosa que no se entienda, chiflen que trato de aclarar. Un saludo!

Pablo.
  #2 (permalink)  
Antiguo 11/10/2008, 18:49
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Subir Imagen a registro (pero no a BD)

http://www.php.net/features.file-upload

El manual te dice como subir una imagen a una carpeta de tu servidor.

Ahora bien, para que guarde la ruta en la base de datos, es solamente tomar la ruta de la imagen y hacer un sencillo INSERT.
  #3 (permalink)  
Antiguo 11/10/2008, 19:23
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Subir Imagen a registro (pero no a BD)

pequeño problema... jajaja

eso como se hace? o sea.. como hago pora decirle al INSERT que solo ponga la ruta?

y ahora.. si la imagen NO esta en el directorio web, sino en mi PC... y la quiero subir a la web y al mismo tiempo, decirle que la inserte en ese campo?

muchas gracias!

pablo.
  #4 (permalink)  
Antiguo 11/10/2008, 19:35
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Subir Imagen a registro (pero no a BD)

Cuando subes la imagen, dicha imagen se guarda en una carpeta de tu servidor (una carpeta temporal).

Luego de que mueves el archivo ya sea con copy o move_uploaded_file, la imagen estara en un directorio de tu sitio web.
Tu decides en que directorio deseas guardas la imagen, y puedes saber el nombre de archivo con $_FILES['campoFile']['name'].

Es solamente insertar esa RUTA (incluyendo el archivo) a un campo de tu Base de Datos.

Mira este tema de las FAQs:

http://www.forosdelweb.com/f18/faqs-...00/#post249389

Última edición por Ronruby; 11/10/2008 a las 20:14
  #5 (permalink)  
Antiguo 11/10/2008, 21:57
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Subir Imagen a registro (pero no a BD)

LISTO! mas facil de lo que pensaba... sinceramente, me complicaba yo.. :P

muchas gracias! ahora SI mi proyecto esta terminado!

un saludo!

pablo.
  #6 (permalink)  
Antiguo 11/10/2008, 21:59
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Subir Imagen a registro (pero no a BD)

ah! me olvidaba...

que pasa si dos usuarios suben un archivo (en este caso, las imagenes) con el mismo nombre? como puedo hacer para que se renombre automaticamente? o alguna otra solucion viable/facil?

muchas gracias otra vez!
un saludo

pablo.
  #7 (permalink)  
Antiguo 11/10/2008, 22:13
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Subir Imagen a registro (pero no a BD)

Seria algo como:

Encontrar la extension
Usar alguna funcion que cree alguna cadena al azar
Agregarle la extension a la cadena.

Para encontrar la extension puedes usar strpos() y para crear una cadena aleatoria, busca en el foro, hay varias.
Cuando uses el copy o move_uploaded_file entonces en el segundo parametro pones la cadena que creaste que consiste en los caracteres aleatorios + la extension.

Es MUY (Pero MUY, casi imposible) que se creen 2 archivos con la misma cadena si esta consiste en caracteres alfanumericos incluyendo mayusculas y minusculas, y de una buena longitud.

;)

Talvez esto te pueda ayudar a crear una cadena alfanumerica:
http://www.php.net/manual/es/function.uniqid.php

Última edición por Ronruby; 11/10/2008 a las 22:19
  #8 (permalink)  
Antiguo 11/10/2008, 23:23
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Subir Imagen a registro (pero no a BD)

funcionando!

muchisimas gracias.... por si a alguno le intersa, este es el codigo "crudo" que hice

Código PHP:
<?

$nombre
=$_FILES['img']['name'];

$id md5(uniqid(rand(), true));

$extsubstr(strrchr($nombre"."),1);

$nvo$id.".".$ext;

$ruta"imagenes/".$nvo
move_uploaded_file($_FILES['img']['tmp_name'], $ruta);



$insertSQL "INSERT INTO imagenes (ruta) VALUES ('$nvo')";
                       

  
mysql_select_db($database_conntrio$conntrio);
  
$Result1 mysql_query($insertSQL$conntrio) or die(mysql_error());
como veran, hay muchas repeticiones y codigo que se podria evitar... pero bueno, eso lo hare mas tarde.. y cada uno lo puede hacer por su cuenta... lo importante es que, el codigo en si, FUNCIONA a la perfeccion. Espero que a alguno le sirva tanto como a mi! un saludo!

Pablo.

pd: gracias Ronruby!
  #9 (permalink)  
Antiguo 11/10/2008, 23:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Subir Imagen a registro (pero no a BD)

Te felicito
Sigue asi.
  #10 (permalink)  
Antiguo 12/10/2008, 03:43
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Subir Imagen a registro (pero no a BD)

Aunque ya tengas solucionado el problema, te comento como evitar el que se sobrescriban ficheros.
Debes hacerlo con un bucle while(...){...}, dentro del while, debes comprobar si el fichero existe (file_exists()) y dentro del while, generas una nueva cadena aleatoria como nombre del fichero.

No se si me he explicado, pero, de esta forma te aseguras 100% que no se sobrescriba un fichero.


otra solucion, seria usar como nombre de la imagen el campo "primary key" de la tabla de usuarios (el id, o el nombre de usuario) si en la misma tabla va a ser un campo unico, tambien sera unico el fichero.


saludos!
  #11 (permalink)  
Antiguo 12/10/2008, 20:28
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Subir Imagen a registro (pero no a BD)

claro... la idea del ID no se me habia ocurrido, y esta buena... ahora, eso solo me sirve si el usuario tiene asignado un solo archivo (en este caso si, pq son las fotos del perfil y es UNA sola)...

PERO en mi web tmb habra trabajos de los disitintos usuarios, y alguno podria tener 5, etc.. y si tuviesen el nombre del ID, estaría en el mismo...

Por eso en MI caso, creo que la solucion que me dio Ronruby esta muy buena (sin desmerecer la tuya, de hecho, creo que sería la más logica), ya que esta crea una cadena aleatoria de 23 CARACTERES alfanumericos... casi imposible que se repitan! Y no tengo tantos archivos (deberian ser MILES de MILLONES) como para que eso pase...

MUCHAS GRACIAS A TODOS POR SU AYUDA!!!

pablo
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 10:29.