Foros del Web » Programando para Internet » PHP »

copiar imagen de un direcotrio a la bd

Estas en el tema de copiar imagen de un direcotrio a la bd en el foro de PHP en Foros del Web. saludos a todos: a partir del tutorial de cluster de como subir imagenes a la bd.. tengo un formulario en el cual esta la opcion ...
  #1 (permalink)  
Antiguo 18/06/2003, 22:27
 
Fecha de Ingreso: abril-2003
Ubicación: Guatemala
Mensajes: 93
Antigüedad: 21 años
Puntos: 1
Pregunta copiar imagen de un direcotrio a la bd

saludos a todos:

a partir del tutorial de cluster de como subir imagenes a la bd..
tengo un formulario en el cual esta la opcion de subir una imagen....pero si alguien no tiene la imagen o no quiere subir imagen, mas que solo datos...... como hago para copiar una que tenga de default en un folder en el servidor.

no se si me entienden.....me inmagino que seria algo como if..else pero ya he estado probando y no puedo.....

Alguien sabe como hacerle

Gracias y saludos

sicuesn
  #2 (permalink)  
Antiguo 18/06/2003, 23:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. si, es if .. else .. pero ademas tienes que leer tu imagen del sistema de archivos .. para eso usarias file() por ejemplo hacia una variable y esa será la que hagas el INSERT a la BD ..

¿que has estado probando de if .. else ? ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/06/2003, 23:32
 
Fecha de Ingreso: abril-2003
Ubicación: Guatemala
Mensajes: 93
Antigüedad: 21 años
Puntos: 1
pues esto es mas o menos lo que deduje

empece mas o menos asi pero me quede trabado...tengo la idea de como es pero no se cual seria el codigo adecuado


localizar la imagen

$imag = "/default/imagen.gif";

despues todo lo que es la conexion a la bd......

luego el

if ($archivo==""){

supongo que sera copy....aqui es donde no se como hacer

} else { aqui vendria el codigo para subir la imagen que me manden...........no lo puse para que nose volviera tan largo el post
}
  #4 (permalink)  
Antiguo 18/06/2003, 23:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues no es copy() (en el "tutorial" que hice .. las imagenes van a parar a la BD el binario entero .. o no lo sabias? ..)

.. es file() o fopen() y fread() .. el caso que tienes que leer tu imagen de esa ruta a una variable y de hay hacer el mismo INSERT que se hace actualmente pero con la imagen_binario que será la que has leido de tu servidor ...

Intentalo y vemos dudas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/06/2003, 03:42
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
y si el valor donde esta el registro del nombre de la foto, tuviese un DEFAULT en MYSQL o lo que sea... por ejemplo... el nombre de un fichero que se llava "vacio.gif", y nosotros previamente meteriamos un fichero en el directorio con ese nombre... el cual estuviese vacio o con un texto...

es lo que hago yo, para no complicarme la vida...;) si os sirve de algo...
__________________
3w.valenciadjs.com
3w.laislatv.com
  #6 (permalink)  
Antiguo 19/06/2003, 10:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
nuevo .. El caso que está hablando del "tutorial" que hice yo sobre subir archivos a la BD en formato "BINARIO" .. yo no guardo la ruta del archivo y el archivo en algún directorio del servidor .. sino que meto todo el archivo en binario en un campo BLOD de la BD .. Por eso ese tipi de soluciones "default" no sirven ..

Hay que hacer lo que ya he mencionado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 19/06/2003, 10:07
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 22 años
Puntos: 2
Cluster,, yo lo llamaria un campo LONGBLOB en la BD..
del cual las imagenes son BINARIAS y no editables..
__________________
http://www.chorcha.com
  #8 (permalink)  
Antiguo 19/06/2003, 11:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Carmargo .. LONGBLOB o BLOB es lo mismo .. se usa para meter "binarios" en tu BD .. el caso que el BLOB sólo llega a 65535 bytes y el LONGLOB a 4294967295 bytes. Lo que sea editable o no . eso depende de tu gestor de Msyql que uses .. pues así suelen "bloquear" ese típo de campos. (phpmyadmin lo hace si así lo configuras si mal no recuerdo y así es como sále por defecto ..)

http://www.mysql.com/doc/en/Column_types.html

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 19/06/2003, 11:56
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 22 años
Puntos: 2
Yo se que tienes razon ;), de hecho siempre..jeje,, pero es que tu nombraste (BLOD) lee tu post y veras,, x eso trate de corregirte ;)

Si,, me han cambiado de servidor (completamente),, y ahora tengo problemas con las imagenes (al subirlas a la BDmysql) :
Código PHP:
$data addslashes(fread(fopen($form_data"r"), filesize($form_data))); 
El codigo esta bien,, es para subirlo a la BD mysql ,, pero me lanza un error,, para ser q me han restringido subir archivos al mysql:

Cita:
Warning: open_basedir restriction in effect. File is in wrong directory in /usr/local/psa/home/vhosts/hotmex.com/httpdocs/panel/send_noticias2.php on line 8

Warning: fopen("/tmp/phpKwsqtx", "r") - Operation not permitted in /usr/local/psa/home/vhosts/hotmex.com/httpdocs/panel/send_noticias2.php on line 8

Warning: Supplied argument is not a valid File-Handle resource in /usr/local/psa/home/vhosts/hotmex.com/httpdocs/panel/send_noticias2.php on line 8
Un saludo;
__________________
http://www.chorcha.com
  #10 (permalink)  
Antiguo 19/06/2003, 12:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues por todos los errores que te lanza .. en ese servidor no tienes permisos para abrir un archivo fuera de tu

/usr/local/psa/home/vhosts/hotmex.com/httpdocs

Como es el caso de pretender abrir el archivo del /tmp de ese servidor ...

Una solución es (si te deja hacerlo) .. usar move_uploaded_file() para "traerte" tu archivo a un /tmp pero de:
tu /usr/local/psa/home/vhosts/hotmex.com/httpdocs

Y de ahí ya podrías hacer el fread() sin problemas de permisos ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 19/06/2003, 12:18
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 22 años
Puntos: 2
vale,, hagamoslo..

grax Cluster
Salu2
__________________
http://www.chorcha.com
  #12 (permalink)  
Antiguo 19/06/2003, 22:05
 
Fecha de Ingreso: abril-2003
Ubicación: Guatemala
Mensajes: 93
Antigüedad: 21 años
Puntos: 1
De acuerdo gracias...me costo pero lo logre

estube leyendo acerca de fopen() y en base a eso lo logre hacer
este es el codigo

Código PHP:
<?php
  $fecha 
date("Y-d-m");
  
$path =  "imagen.gif";
  
$conexion mysql_connect("localhost","alchilazo","chapulin") or die("No se pudo realizar la conexion con el servidor.");
  
mysql_select_db("base_datos",$conexion) or die("No se puede seleccionar BD");
  
  if (
$archivo==""){
  
      
$binario_contenidoaddslashes(fread(fopen($path"r"), filesize($path)));
            
      
$consulta_insertar "INSERT INTO $anun (id, archivo_binario, nombre, apellidos, telefono, direccion, email, categoria, titulo, precio, desc_corta, descripcion, fecha) VALUES ('', '$binario_contenido', '$nombre', '$apellidos','$telefono', '$direccion', '$email', '$categoria', '$titulo', '$precio', '$desc_corta','$descripcion', '$fecha')";
  
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
      echo 
"<font color=\"#FF6600\" size=\"6\" face=\"Arial, Helvetica, sans-serif\">Gracias por usar alchilazo.com</font>";
  echo 
    
"<table width='100%' align='left' border='1' bordercolor='#FFFFFF' >";
  echo 
"<tr>
    <td width='100%' align=\"left\" border='1' bordercolor='#999999' bgcolor=\"#FAFAFA\"><font size=\"3\" face=\"Arial, Helvetica, sans-serif\"><strong>Se ingresaron los siguientes datos: </strong></font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Nombre: </font><font size=\"2\" color=\"#0000FF\">$nombre</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Apellido: </font><font size=\"2\" color=\"#0000FF\">$apellidos</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Telefono: </font><font size=\"2\" color=\"#0000FF\">$telefono</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Dirección: </font><font size=\"2\" color=\"#0000FF\">$direccion</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Email: </font><font size=\"2\" color=\"#0000FF\">$email</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Título del anuncio: </font><font size=\"2\" color=\"#0000FF\">$titulo</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Precio: </font><font size=\"2\" color=\"#0000FF\">$precio</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Descripción corta: </font><font size=\"2\" color=\"#0000FF\">$desc_corta</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Descripción: </font><font size=\"2\" color=\"#0000FF\">$descripcion</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Publicado: </font><font size=\"2\" color=\"#0000FF\">$fecha</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Nombre del archivo: </font><font size=\"2\" color=\"#0000FF\">No subio ninguna imagen</font>
    </tr>"
;
  echo 
"</table><br>";
  
} else {
  
  
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
  
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"r"), filesize($binario_nombre_temporal)));
  
$binario_nombre=$_FILES['archivo']['name'];
  
$binario_peso=$_FILES['archivo']['size'];
  
$binario_tipo=$_FILES['archivo']['type'];

  
  
$consulta_insertar "INSERT INTO $anun (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo, nombre, apellidos, telefono, direccion, email, categoria, titulo, precio, desc_corta, descripcion, fecha) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo', '$nombre', '$apellidos','$telefono', '$direccion', '$email', '$categoria', '$titulo', '$precio', '$desc_corta','$descripcion', '$fecha')";
  
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
  echo 
"<font color=\"#FF6600\" size=\"6\" face=\"Arial, Helvetica, sans-serif\">Gracias por usar alchilazo.com</font>";
  echo 
    
"<table width='100%' align='left' border='1' bordercolor='#FFFFFF' >";
  echo 
"<tr>
    <td width='100%' align=\"left\" border='1' bordercolor='#999999' bgcolor=\"#FAFAFA\"><font size=\"3\" face=\"Arial, Helvetica, sans-serif\"><strong>Se ingresaron los siguientes datos: </strong></font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Nombre: </font><font size=\"2\" color=\"#0000FF\">$nombre</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Apellido: </font><font size=\"2\" color=\"#0000FF\">$apellidos</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Telefono: </font><font size=\"2\" color=\"#0000FF\">$telefono</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Dirección: </font><font size=\"2\" color=\"#0000FF\">$direccion</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Email: </font><font size=\"2\" color=\"#0000FF\">$email</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Título del anuncio: </font><font size=\"2\" color=\"#0000FF\">$titulo</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Precio: </font><font size=\"2\" color=\"#0000FF\">$precio</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Descripción corta: </font><font size=\"2\" color=\"#0000FF\">$desc_corta</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Descripción: </font><font size=\"2\" color=\"#0000FF\">$descripcion</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Publicado: </font><font size=\"2\" color=\"#0000FF\">$fecha</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Nombre del archivo: </font><font size=\"2\" color=\"#0000FF\">$binario_nombre</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Tamaño: </font><font size=\"2\" color=\"#0000FF\">$binario_peso</font>
    <br><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Tipo: </font><font size=\"2\" color=\"#0000FF\">$binario_tipo</font>
    </tr>"
;
  echo 
"</table><br>";
  }
?>
haber si me das algun otro consejo

gracias nuevamente cluster.....

saludos

sicuesn
  #13 (permalink)  
Antiguo 19/06/2003, 22:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Pues .. primero felicitarte .. si te das cuenta es exactamente lo mismo que ya había pero la ruta ahora es la de tu archivo por defecto y no la del directorio temporal donde PHP se guarda los archivos que sube ...

Luego .. consejos .. Pues, .. ahí mismo estás usando filesize($path) .. en la BD tienes un campo para guardar el peso (bytes) de ese archivo .. y - bueno no sé si lo usaras . .pero perfectamente puedes usarlo para guardartelo en la BD ..

$binario_contenido= addslashes(fread(fopen($path, "r"), filesize($path)));

Otro consejo ..

Si sabes que haz de mostrar "UNA" sóla imagen por defecto y la tienes en tu servidor .. lo que deberias hacer simplemente es NO guardar repetidamente esa imagen por defecto en la BD y simplemente hacer un condicional a ese campo de la tabla imagenes .. Si no hay imagen .. presentas tu imagen por defecto

Código PHP:
if (empty($nose['binario'])){
   echo 
"<img src=\"imagen_por_defecto.jpg\">";
} else {
   echo 
"<img src=\"ver_imagen.php?id=".$nose['id']."\">";

Eso donde presentes tu imagen ... Así de simple xDDD ...

Ahora, si por ejemplo das opción a que pongan una imagen por defecto a elección de una lista .. ahí estaría mejor guardartela como lo haces ahora mismo ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 19/06/2003, 22:42
 
Fecha de Ingreso: abril-2003
Ubicación: Guatemala
Mensajes: 93
Antigüedad: 21 años
Puntos: 1
gracias cluster

yo creo que eso seria mejor, hasta talvez haria un mejor funcionamiento....talvez mas rapido y asi talvez no sobrecargaria tanto la bd.....

creo que eso voy a hacer mejor....igual aprendi algo nuevo...hehehehehe

saludos

sicuesn
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 12:09.