jseba84 Posted December 12, 2012 Report Share Posted December 12, 2012 Hola a todos! Egresé de la carrera de Diseño y Programación Multimedia en Inacap. En noviembre di mi examen para titularme el cual reprobé. Ahora lo doy de nuevo este sabado. Unas de las preguntas era subir fotos a un BD. He buscado por la red pero ningún ejemplo me queda claro. Por favor si alguien se puede tomar el tiempo de explicarme le estaré muy agradecido. Por lo pronto les comento que en la BD creo un campo IMG de tipo BLOBDesde HTML hago un formulario que pida nombre, apellido y subir imagen. Pero luego me quedo pegado en PHP para procesar la imagen e insertarla en el campo IMG. Desde ya muchas gracias por su tiempo. Link to comment Share on other sites More sharing options...
Leoxz Posted December 12, 2012 Report Share Posted December 12, 2012 Y no te sirve guardar la Ruta de la Imagen en la Base de Datos ? En mi opinión creo que es lo mejor Saludos Link to comment Share on other sites More sharing options...
jseba84 Posted December 12, 2012 Author Report Share Posted December 12, 2012 Y no te sirve guardar la Ruta de la Imagen en la Base de Datos ? En mi opinión creo que es lo mejor Saludos Hola, gracias por tu comentario. La verdad que es que también considero que es lo mejor. De esa manera no sobrecargas la BD innecesariamente. Pero la pregunta del examen que pasó, indicaba que tenia que ser guardada en la BD. Saludos y gracias nuevamente. Link to comment Share on other sites More sharing options...
cañangasñangas Posted December 12, 2012 Report Share Posted December 12, 2012 (edited) Y no te sirve guardar la Ruta de la Imagen en la Base de Datos ? En mi opinión creo que es lo mejor Saludos Hola, gracias por tu comentario. La verdad que es que también considero que es lo mejor. De esa manera no sobrecargas la BD innecesariamente. Pero la pregunta del examen que pasó, indicaba que tenia que ser guardada en la BD. Saludos y gracias nuevamente. En ese caso para que ocupar base de datos, mejor ocupar directamente la libreria "directorios" de php... Bueno Antes que todo es un poco preocupante que siendo un posible profesional, no puedas hacer este tipo de problemas me causa un poco de preocupacion, pero bue... no soy quien para criticar.... te dejo una rutina super sencilla... antes debes tener estas columnas en tu tabla: id - int AUTO INCREMENTE //siempre es bueno tener un id...nombre - varchar //este contiene el nombre del archivopeso - int //este contiene el peso del archivocontenido - long blob //este contiene el contenido binario del archivotipo - varchar // este contiene el tipo de archivo y extencion del archivo Bueno aca el uploader: <?php //edita tus valores aca $sql_data = array("server", "user", "pass", "data base", "tu tabla"); // tus datos mysql, servidor, usuario, clave, base de datos, y tabla $tipos_permitidos = array("jpg", "png", "bmp", "gif"); //extencion de archivos pertmitidos (en minusculas) $max_tiempo = 600; // tiempo maximo de ejecucion (para archivos grandes) en segundos $max_file_size = 1000; // peso maximo del archivo (para archivos grandes) en megas //no borrar nada aca!! ini_set("max_input_time", $max_tiempo); ini_set("max_execution_time", $max_tiempo+100); ini_set("post_max_size", ($max_file_size+1024)."M"); ini_set("memory_limit", ($max_file_size+1024)."M"); ini_set("upload_max_filesize", $max_file_size."M"); $link = mysql_connect($sql_data[0], $sql_data[1], $sql_data[2]); if($link != false && mysql_select_db($sql_data[3])){ if(isset($_POST["send"])){ $ext = explode(".", $_FILES["file"]["name"]); $ext = strtolower($ext[(count($ext)-1)]); if(in_array($ext, $tipos_permitidos)){ $theFile = $_FILES["file"]["tmp_name"]; $peso1 = filesize($theFile); $cont = addslashes(fread(fopen($theFile, "r"), $peso1)); $peso = $_FILES["file"]["size"]; $tipo = $_FILES["file"]["type"]; $nombre = $_FILES["file"]["name"]; if($peso >= 1 && $peso <= $max_file_size){ $sql = mysql_query("INSERT INTO ".$sql_data[4]." (nombre, peso, contenido, tipo) VALUES ('$nombre', '$peso', '$cont', '$tipo')"); if($sql){ echo "El archivo se subio correctamente"; } else{ echo "Hubo un error subiendo el archivo"; } } else{ echo "El archivo debe tener entre 1 byte y maximo $max_file_size MB"; } } else{ echo "Archivo con extension no permitida"; } } else{ ?> <form method="post" action="" enctype="multipart/form-data"> <table border="1"> <tr> <td>Seleccione archivo</td> <td><input type="file" name="file" /></td> </tr> <tr> <td colspan="2"><input type="submit" name="send" value="subir reporte" /></td> </tr> </table> </form> <?php } } else{ echo "Hubo un error conectando a la base de datos po mijo..."; } ?>y por si te falta.... para leer el archivo inserto en mysql te dejo un "lector" (lector_imagenes.php) <?php //edita tu variables $sql_data = array("server", "user", "pass", "data base", "tu tabla"); //no edites nada aca!! $id = $_GET["id_file"]; $link=mysql_connect($sql_data[0], $sql_data[1], $sql_data[2]); if($link != false && mysql_select_db($sql_data[3])){ $q = mysql_query("SELECT * FROM ".$sql_data[4]." WHERE id='$id'"); $f = mysql_fetch_array($q); header("Content-type: ".$f['tipo']); header("Content-length: ".$f['peso']); header("Content-Disposition: inline; filename=".$f['nombre']); echo $f["contenido"]; } else{ echo "Error"; } } else{ echo "Error"; } ?> entonces para leer la imagen debes hacer esto: <img src="lector_imagenes.php?id_file=n" />n = id de la imagen que deseas ver... ve como andas con eso... Saludos. PD - EDITO: tu debes validar los valores que entraran en la base de datos porque esta rutina no la hice contra sql injection y demases... Edited December 13, 2012 by cañangasñangas Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now