Foros del Web » Programando para Internet » PHP »

Imagenes??

Estas en el tema de Imagenes?? en el foro de PHP en Foros del Web. Hola amigos creo que esta pregunta se lo han echo ya un buen par de vecez, pero bueno hay va nuevamente, quisiera saber como guardar ...
  #1 (permalink)  
Antiguo 23/01/2004, 08:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
Imagenes??

Hola amigos creo que esta pregunta se lo han echo ya un buen par de vecez, pero bueno hay va nuevamente, quisiera saber como guardar imagenes en mysql atravez de php he visto dos formas uno que guarda directamente en la base de datos y otro que da la referencia de la ubicacion, en el caso de la referencia lo que tengo que pasar es la direccion por ejemplo si fuera en un servidor seria; http://www.rogel.cl/imagenes/rogel.jpg ? algo asi o no? , y si fuera en un localhost seria c:\imagenes\rogel.jpg la verdad es que no estoy seguro les agradezco me pudieran ayudar y decirme cual es la mejor forma si guardar la direccion o directamente en la base de datos y si tienen algún ejemplo se los agradezco

Muchas gracias por su ayuda

  #2 (permalink)  
Antiguo 23/01/2004, 08:29
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 14 años
Puntos: 0
Hola,

vamos a ver...

si lo que quieres guardar es la referencia a la imagen, con que guardes el nombre de la imagen es suficiente, ya que luego puedes referenciarla desde PHP (seleccionando de la BD el nombre), poniendo la ruta completa (http://...../nombreimagen).
-> ese nombreimagen seria una variable que la obtienes leyendo de la BD el nombre de la imagen que guardaste anteriormente.

Si tienes un sitio web (en tu servidor), no la referencies de forma local, no es nada aconsejable, pienso que es mejor que la referencies a traves de http://...

No se si me he explicado bien, espero que si

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #3 (permalink)  
Antiguo 23/01/2004, 08:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Rutas absolutas tipo:

../../archivo.tal

./archivo.tal

../archivos/archivo.tal

Son las ideales .. todas referenciadas de forma absoluta a la estructura de tu servidor ..

A su vez .. si quieres usar rutas absolutas completas .. puedes obtener la ruata de tu "DOCUMENT_ROOT" con la variable de servidor de mismo nombre.

$miraiz=$_SERVER['DOCUMENT_ROOT']

$ruta=$miraiz."/archivos/archivo.tal";

así si cambias de servidor .. no afectará para nada a tu script (ni aunque cambies de un linux a un windows o a la inversa).

Usar rutas "absolutas" te permitirá leer/usar archivos "fuera de tu document_root" incluso .. con lo cual aumentarias la seguridad de tus archivos al dejarlos fuera del alcance de un http://www.ta.tal/archivo.tal y ser PHP el que entrege el archivo leyendolo de su ubicanción "fisica" en ese sistema de archivos del servidor.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 23/01/2004, 09:00
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta voy entendiendo

ok voy entendiendo ahora hice una preuba con un ejempo de las faqs y no me resulto
el scritp es este:

Código PHP:
<html>
<head>
<title>prueba de imagenes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="<?php echo $php_self ?>"method="post" enctype="multipart/form-data" name="ubicaform2" id="ubicaform2">
<input name="addubica" type="submit" id="addubica" value="subir imagen">
imagen: <input name="upimagen" type="file" id="upimagen">
</form>
<?php
if(isset($addubia)){
$newimagen=sprintf("fotos/%s",$upimagen_name);
move_uploaded_file($upimagen,$newimagen);
$link("conexion");//el servidor esta en internet es un hosting
mysql_select_db("imagen");
$sql="insert into imagen(imagen)values('$newimagen')";
$result=mysql_query($sql,$link);
}
?>
</body>
</html>
en este script que tendria que cambiar para que resultara de la form que dijo cluster

Última edición por rogel; 23/01/2004 a las 09:03
  #5 (permalink)  
Antiguo 23/01/2004, 09:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. si no te resultó .. ¿que error te dío?

Por cierto .. sería mejor que usases $_FILES en lugar de acceso "global" como se hace a los datos/propiedades de la imagen (archivo).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 23/01/2004, 13:00
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
con otro script me da otro error

Warning: fopen("foto","rb") - No such file or directory in d:/abria merlin/apache/htdocs/imagenes/guardar_archivo.php on line 10

Warning: Supplied argument is not a valid File-Handle resource in d:/abria merlin/apache/htdocs/imagenes/guardar_archivo.php on line 11

Warning: Supplied argument is not a valid File-Handle resource in d:/abria merlin/apache/htdocs/imagenes/guardar_archivo.php on line 13

este es el error que me da ahora el script con este otro codigo que hice:

Pagina que envia:

Código PHP:
<html>
<
head>
<
title>prueba de imagenes</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</
head>
<
body>
<
form action="guardar_archivo.php" method="post" enctype="multipart/form-data" name="guardar archivo">
Descripción:<input type="text" name="titulo" size="30">
Ubicación:<input type="file" name="archivito">
<
input type="submit" value="Enviar Archivo">
</
form>
</
body>
</
html
Pagina que recibe:

Código PHP:
$link=mysql_connect("conexion");
mysql_select_db("imagenes");
$archivo=$_FILES["archivito"]["tmp_name"];
$tamanio=$_FILES["archivito"]["size"];
$tipo=$_FILES["archivito"]["type"];
$nombre=$_FILES["archivito"]["name"];
$titulo=$titulo;
if(
$archivo!="none"){
$fp=fopen($archivo,"rb");
$contenido=fread($fp,$tamanio);
$contenido=addslashes($contenido);
fclose($fp);
$qry="insert into archivos values(0,'$nombre','$titulo','$contenido','$tipo')";
mysql_query($qry);
if(
mysql_affected_rows($link)>0){
echo
"Guardado";
}else{
echo
"No se ha guardado";
}
}
?> 

Última edición por rogel; 23/01/2004 a las 13:02
  #7 (permalink)  
Antiguo 23/01/2004, 13:04
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
de todas maneras si es por el directorio temporario de las imagenes este esta configurado como: c:\temp_imagenes.
  #8 (permalink)  
Antiguo 23/01/2004, 13:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
rogel .. por favor .. aclarate con el script que vas a usar y desde ahí miramos soluciones y cosas que cambiar .. sino nos lias.

En tu último ejemplo ...

usa la función move_uploaded_file() en lugar del fopen() .. O por lo menos aclarate si vas a dejar tu imagen (archivo) en la BD en modo binario .. o vas a dejarla en tu sistema de archivos y sólo guardaras la ruta hacia la imagen.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 23/01/2004, 13:41
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
la voy a dejar en la bd el ultimo script es el que voy usar
  #10 (permalink)  
Antiguo 23/01/2004, 13:48
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
ahora si la imagen esta guardada de forma bynaria despues de guardada como lo hago para poder mostrarla, para que no me aparezca solo simbolos sino la imagen en si por ejemplo dentro de una celda
  #11 (permalink)  
Antiguo 23/01/2004, 14:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno ..si vas a dejar tu imagen en la BD en formato binario .. revisa este mini_tutorial que contiene todo el proceso completo y hasta creación de thumbnails para las imagenes ...

http://www.forosdelweb.com/showthrea...hreadid=127775

Pero lee bien los comentarios de ese mensaje .. Esta técnica de almacenar datos binarios (imagenes, archivos en general) tiene sus ventajas y sus desventajas ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 23/01/2004, 14:21
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
en realidad opte por esta opcion porque no entendi bien lo de guardar solo la ruta porque mi servidor es un hosting y para accder a el lo temgo que hacer atravez de ftp entonces no entendi eso de la carpeta que esta la imagen donde realmente se guarda me enrede
  #13 (permalink)  
Antiguo 23/01/2004, 16:14
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
hice el codigo del mini tutorial despues me di cuenta que no me va funcionar porque la version del php es la 4.0 que cambios puedo hacer para que resulte el codigo
  #14 (permalink)  
Antiguo 25/01/2004, 01:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cambiar la versión de PHP xDD ..

En serío .. usar "upload" asumiendo que las variables que vas a tener que usar has de usarlas como globales NO es nada aconsejable ni seguro.

Pero si no puedes o no quieres cambiar de versión de PHP .. sigue el link que dejé en ese mismo tutorial hacia la documentación oficial de PHP sobre "Upload" .. ahí tienes todas las variantes para diferentes versiones de PHP.

Y .. sobre todo revisa bien que versión de PHP usas exactamente .. No es lo mismo "PHP 4.0" que "PHP 4.0.6" por ejemplo .. los "tres" nº que componen la versión de PHP son importantisimos.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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:05.