Maestroooooo!!!!!
muchisimas gracias!! es justo lo que necesitaba!!!
te la has mandado!! muy completo y muy claro todo
Un saludo.
| |||
No me muestra la imagen Hola, He adaptado este script para subir archivos a la bd. Todo me funciona correctamente, me sube la imagen al servidor. Pero lo que no me funciona es que al listar la imagen no me la muestra, en cambio las demás características si las muestra. Exactamente no me funciona esto: Código PHP: Trabajo en php 4.3.4 y tengo la libreria GD Version bundled (2.0.15 compatible). He creado la tabla exactamente como pone en el ejemplo. Tengo algo mal?? Muchas gracias |
| |||
Pavement ... Por lo que veo has modificado bastante el script original .. tanto como que has cambiado la filosofía del mismo que era la de enseñar a guardar datos de forma binaria en la BD (Msyql) .. Sería mejor que abrieses un nuevo tema en el foro ... pongas el código que ahora estás usando (todos) y expliques el problema. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Imagenes Hola Cluster, No he adaptado nada del código, lo único es que al no salirme lo de mostrar las fotos de la base de datos mysql pues he intentado ir probando cosas, pero en principio tu código básico me sirve perfectamente, lo que no me muestra los datos! Gracias |
| |||
Pero ... Pavement .. si leistes bien de que trata el script .. se trata de guardar tus archivos (de cualquier tipo) -completos- en la Base de datos en un campo binario .. así que prubeas como "ruta donde está el archivo" no vas a conseguir nada .. En la BD se guarda el archivo completo en binario .. no rutas. Comprueba que el campo que guarda el archivo en tu BD tiene algún valor (si lo editas verás un montón de códigos alfanuméricos sin sentido aparente .. eso es el "binario" (por decirlo de alguna forma) del archivo ..). También revisa el resto de campos .. sobre todo el que guarda el formato MIME de la imagen (tipo) para ver si reconocío bien el formato de la imagen .. por qué con ese dato se forma la cabecera para que el navegador entienda que los datos que se le van a enviar es del tipo que ahí se indica .. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Hola, bueno me digo "HAY QUE LEER BIEN ANTES DE PREGUNTAR", lei hacia atras sus comentarios y cuando por fin me fume un cigarrillo, me relaje, vi la respuesta escrita... como combinar texto e imagen de una BD. en la página que tiene el texto: echo "<img src='fotos/show_foto_categoria.php?cod_categoria=7' border='0'>"; y la pagina de show fotos está el código con el header de mostrar solo la imágen. Uds. son grandes de verdad Un Abrazo Sergio Cuervo |
| |||
a mi me funciona bien cuando introduce los datos en la base de datos, pero no se porque, al momento de mostrarlas(listar_imagenes.php), solo me muestra la informacion sobre la imagen, y en el lugar donde debe ir la imagen solo me muestra un cuadrado con una cruz. y en ver.php solo me muestra el cuadrado con la cruz, sin informacion sobre la imagen. Revisando la base de datos veo que en el campo "archivo_binario" todos los registros tienen valor "[BLOB - 0 Bytes]", pero si me reconoce el tipo de archivo y el tamaño bien... Me pueden ayudar??? Última edición por rik4rdo; 14/03/2004 a las 14:04 |
| |||
Problema a la hora de mostrar la imagen Hola a todos alguie me puede decir que es lo que esta pasando cuando trato de mostrar la imagen me muestra este mensaje: /tmp/phpbrWXtx Alguien tiene idea de que se puede tratar, es el server??? o que??? Saludos a todos y espero me puedan dar una respuesta.. JC |
| |||
Pero donde te sale eso .. al ejecutar que script? .. que tipo de archivo se supone que es (una imagen en que formato?). Sólo sale eso o más cosas? Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Gracias Cluster por contestar... sale cuando ejecuto el srcipt y lo que quiero mostrar es una imagen gif o jpg. y si es lo unico que sale.... que crees que pueda ser??? puede ser el server??? como lo prodria resolver??? Saludos JC |
| |||
El ejemplo original usa las cabeceras fijas para archivos JPG no GIF (por lo menos el que genera los thumbnails). El ver.php si que toma en cuenta el formato MIME de la imagen y en consecuencia genera la cabecera HTTP adecuada ... Revisa en tu BD si el campo 'archivo_tipo' de tu imagen (registro) tiene el valor esperado .. algo tipo: image/jpeg para los JPG .. image/gif para los gif .. etc. Si ese valor no existe o no es correcto (= al formato de la imagen) la cabecera HTTP se estará enviando mal al navegador .. así que no sé ahí que interpretará o estará intentando interpretar el navegador .. Un saludo, PD: A todo esto .. ¿has hecho cambios (sobre le código) de los ejemplos originales .. o estás probando los ejemplos tal cual se publican aquí?
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Hola a todos: Mis Felicitaciones para tan buen tutorial ... y por supuesto para Cluster . Llevo suscrito al tema porque pensaba usarlo tarde o temprano, y ya empecé a hacer pruebas y va muy bien. Lo que quiero saber es si se puede saber el id en la misma inserción (con certeza)... ¡A ver si me explico mejor! Al insertar la imágen, el id es un campo que se autoincrementa, y por eso se inserta con la cadena vacía (¿creo que voy bien... ?) Hice un cambio en las propiedades del campo para que no se autoincremente y antes de subir la imagen leo el valor máximo del campo id, y le sumo uno: $consulta_id = "select max(id) as id from archivos"; $consulta = mysql_query($consulta_id, $conexion) or die("No se pudo leer los datos de la base de datos."); $_id = mysql_fetch_array($consulta); $nuevo_id = $_id["id"] + 1; Seguramente se pueda conseguir mejor, pero no estoy muy diestro en estos temas... Luego, al hacer la inserción, el campo id le asigno $nuevo_id. La pregunta entonces sería: ¿Es correcto como lo hago?... ¿Se puede hacer mejor...? |
| |||
Hola caricatos, Puedes usar la función mysql_insert_id() o su equivalente en SQL para obtener el último id generado por un campo autonumérico e incremental. Pero, recuerda que ese ID ya es autoincremental de por sí .. así que si necesitas hacer esa operación para sumar+1 sobre la misma tabla de archivos (tabla SQL) no es necesario que lo hagas pues ya ese proceso es automático. El campo "ID" se debe incrementar .. no deberías dejarlo como tipo "libre" ( y si lo haces como lo estás haciendo por lo menos que sea con propiedad de "Único" el campo "ID" para evitar repetidos ) .. Se supone que ese ID ha de ser único (a nivel de tabla y para usarlo como clave foránea ..) otra cosa es que tu necesites o tengas un campo extra que le asignes algún tipo de código a tus imagenes sea secuencial o no .. ¿Por qué dices:? Cita: Un saludo, "Al insertar la imágen, el id es un campo que se autoincrementa, y por eso se inserta con la cadena vacía (¿creo que voy bien... ?)"
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Hola otra vez: Cluster: Lo que citas se simplifica con este código: insert id into archivos values "" O sea que no se inserta nada, pero se autoincrementa... Pero no te preocupes que no merece la pena darle más vueltas... Aprovecho para mostrar una página prototipo de lo que intento hacer: http://www.pepemolina.com/archivos_bd/index.html Las imágenes se suben e inmediatamente están disponibles para su uso. Pienso que puede ser interesante para un libro de visitas... por cierto que estoy adaptando también un menú de tunait (Es un tema del foro javascript) Saludos |
| |||
mm bueno .. $sql="insert id into archivos values ('')"; si en un campo autoincremental no se indica valor para esa variable se autoincrementa por si solo (una especie de id=id+1) al crear un campo. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
¡Otra cosilla! Hola otra vez: He visto que no se ven las imágenes bmp... supongo que solo valen los gif, jpg y png. Si alguien me lo puede confirmar se lo agradecería, así pongo algunas restricciones. Saludos |
| |||
mm jeje.. eso deberías saberlo tu más que nosotros caricatos xDD .. Las visualización de las imagenes en sí depende del cliente (navegador) que uses .. Tal vez si tiene asociado los .bmp (extensión) al navegador usado vean esos .bmp .. pero lo más común son las extensiones que mencionas. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Hola otra vez: La pregunta anterior es porque me fijé en el listado de imágenes: http://www.pepemolina.com/archivos_b...r_imagenes.php y alguien ha intentado poner un fichero bmp y no se ve (al menos en mi ordenador). Tal vez sea por la versión php instalada en mi servidor o porque el fichero que han subido (como se trata de pruebas no llevo mucho control... ) tiene algún problema. De todos modos es evidente que php reconoció la cabecera. Por cierto, hablando de control, la versión de ver.php, le puse una pequeña restricción para evitar que suban imágenes indebidas (creo que es muy difícil llevar ese control), añadiendo un campo de nombre activo que por defecto es 1, y si son imágenes malintencionadas cambio el valor de ese campo y redireccionan la imagen hacia una ovejita... (se ve en el listado) La pregunta la hacía para evitar que suban imágenes que no sean aceptadas... y suponía que ciertos tipos no serían reconocidos, por ejemplo wmf los reconoce explorer y no los reconoce mozilla. Sobre bmp acabo de comprobar que mozilla los reconoce (parece que no subieron una imagen válida) Saludos |
| |||
mm bueno .. cuando subes un archivo por HTTP .. en PHP dispones de una variable que indica el tipo de imgen que es (cabecera MIME del archivo) .. más seguro de evaluar el tipo de archivo que por una extensión que podría ser modificada malintencionadamente .. Así que si quieres filtrar algún(s) tipo(s) de archivos .. tan sólo tienes que tomar esa variable en el proceso de Upload. Lo malo que tiene "PHP" es que como lenguaje del lado del servidor . .hasta que la imagen/archivo no ha subido completamente al servidor no se puede determinar el tipo de archivo .. Pero, para una "pre-validación" podrías usar javascript para limitar el nombre del archivo por su extensión y por último que sea PHP y la variable mencionada quien determine si corresponde o no (por si algún malintencionado te cambia la extensión del archivo siendo que según su formato MIME sea de otro tipo). Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Hola otra vez: Ya hice la pre-validación javascript, y me ha ido bien, pero mi problema ahora es que quiero limitar el tamaño de los archivos... ... con javascript se puede saber el tamaño, y el peso se puede saber con explorer (el gran problema de javascript... la compatibilidad entre navegadores) pero como no es algo estandar intenté hacerlo con php y no me hace caso: Tengo esto en el archivo equivalente a insertar.php de este tema: $binario_peso=$_FILES['archivo']['size']; ... $maxBytes = $_POST["maxbytes"]; Cambié el método get por post... supongo que no tendrá importancia. if ($binario_peso > $maxBytes) { header("location: ..."); } ... con esto, cuelan imágenes con un tamaño mucho más grande ... $maxBytes al ser pasada por un formulario es una cadena y supongo que $binario_peso es un entero. ... o tal vez al no estar la imagen cargada, el valor no es el correcto. Saludos |
| |||
Cita: Una de las virtudes (para unos o defectos para otros) es que PHP convierte tipos .. así que tu comparación de ambas variables sería correcta .. De todas formas si quieres puedes forzar el tipo de variable que usas con "type casting" por ejemplo... con esto, cuelan imágenes con un tamaño mucho más grande ... $maxBytes al ser pasada por un formulario es una cadena y supongo que $binario_peso es un entero. http://www.php.net/manual/en/languag...es.typecasting Con respecto al problema con la validación del peso del archivo .. revisa: http://www.php.net/features.file-upload Donde veras un parámetro más que definir en tu formulario: <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> Lee los comentarios de los usuarios de ese tema del manual oficial de PHP .. hay comentarios sobre 'size' ... Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Problema con ver imagen Excelente esta perfecto!!!! Nada más que tengo un problemita... Todo me jala a la perfección el problema es que cuando despliego la imagen me la despliga a la mitad lo de mas me la pone deforme y eso es con varias imagenes... ya probe con el sistema de archivos y tambien me pone la imagen igual y almacenado las imagenes en la la bd de datos tambien me pone la imagenes incompletas... tambien proble con otros archivos y lo mismo... que puede pasar, porque se dañan los archivos cual seria la solución???? puede ser mi servidor??? tengo que modificar algo en especial??? ayudenme porfavor Saludos JC |
| |||
Leistes la NOTA del "tutorial"? Cita: NOTA: El artículo está usando campos tipo BLOD para almacenar el archivo binario. Su limite es de 65535 bytes (64 Kbytes), si desean almacenar archivos de peso superior deben de cambiar el tipo de campo "archivo_binaro" a un MEDIUMBLOB (16Mbytes max.) o a un LONGBLOB (4 Gbytes). Más info al respecto en: 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. |
| |||
Gracias por contestar... estoy usando el campo tipo mediumblob... tu crees que pueda ser mi versión de PHP, estoy manejando la versión 4.2.2. y tambien intente subir archivos al servidor por medio de un copy y los mismo la imagen me la pasa a la mitad... que crees que pueda ser??? Saludos y gracias JC |
| |||
Pero .. que tamaño en bytes tienen los archivos que subes? En cuanto al archivo a subir ... tienes várias limitaciones que pueden afectar: En Mysql tienes el tipo de campo (como la NOTA que puse mencioné) .. En PHP tienes todas las restricciones del Upload en las directivas (php.ini ver también en phpinfo()): max_upload_filesize post_max_size (o similares .. las escribí de memoria ..) Y para más remata .. el servidor HTTP que uses también puede limitar el tamaño de datos que pueda recibir. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Insertar Archivo en una BD informix Hola que tal amigos tengo un problemita, a ver si pueden ayudarme, Estoy trabajando con una BD informix y deseo insertar archivos en una tabla, utilice este codigo pero igual no inserta esta es mi tabla de prueba: CREATE TABLE doc( descripcion char(60), documento BLOB ); como informix maneja los tipos de datos blob para estos casos, hago uso de el. una vez que envio el formulario y capturo los datos hago lo siguiente: if (empty($_FILES['archivo']['name'])) { header("location: ../nueva_solucion.htm?caso=$caso&proceso=falta_indica r_fichero"); exit; } // archivo temporal (ruta y nombre). $binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ; // leer del archvio temporal .. el binario subido. $binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal))); // Obtener del array $_FILES los datos del binario .. nombre, tamaño y tipo. $binario_nombre=$_FILES['archivo']['name']; $binario_peso=$_FILES['archivo']['size']; $binario_tipo=$_FILES['archivo']['type']; //insertamos los datos en la BD. ifx_query("INSERT INTO doc VALUES ('descripcion', '$binario_contenido')", $conect_id) or die("No se pudo insertar el registro en la base de datos."); exit; pero igual me da error, me dice que no se inserto el registro, la verdad es que no se que pueda estar ocacionando el error, agradeceria mucho que me ayudaran en esto.
__________________ :cool: Hagas lo que hagas, que sea eficiente :arriba: Última edición por david-SM; 18/05/2004 a las 08:53 |
| |||
Hay un detalle ... No todos los motores de BD trabajan igual los archivos binários ..Por eso el ejemplo está centrado con ejemplo para Mysql. Inicia un nuevo tema (haciendo si quieres referencia a este y el código que usas) para ver si alguien conoce o trabaja con Informix y campos binarios .. Por ejemplo ... lo primero que tendrías que ver es el error concreto que te está arrojando tu consulta .. alguna función equivalente a la mysql_error() para ver el error concreto de SQL o conexión que puedas tener. Pero insisto .. en un nuevo tema. Cada BD tiene su forma própia de trabajar con este tipo de archivos aunque algunas "coincida". Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| ||||
Errores al subir Este es el script que modifique en base del de Cluster.. al subirlo a la web y provarlo me salieron los errores de abajo. Código PHP: Warning: fopen(): open_basedir restriction in effect. File(/tmp/phpGM8dbi) is not within the allowed path(s): (/home/webcindario/iforums) in /home/webcindario/iforums/cambia_avatar_proceso.php on line 9 Warning: fopen(/tmp/phpGM8dbi): failed to open stream: Operation not permitted in /home/webcindario/iforums/cambia_avatar_proceso.php on line 9 Warning: filesize(): open_basedir restriction in effect. File(/tmp/phpGM8dbi) is not within the allowed path(s): (/home/webcindario/iforums) in /home/webcindario/iforums/cambia_avatar_proceso.php on line 9 Warning: fread(): supplied argument is not a valid stream resource in /home/webcindario/iforums/cambia_avatar_proceso.php on line 9 No se pudo insertar los datos en la base de datos. Me podrian decir como lo puedo solucionar? Por favor, Muchas gracias por su tiempo
__________________ - - :neurotico eso fue un php warning ? creo q si... :golpeado: |
| |||
antihem .. En "webcindario" y la mayoría de servicios de hosting gratutitos este ejemplo NO funciona ... En tu caso particular es por qué open_base_dir (configuración de PHP que lo puedes ver en un phpinfo() si te deja hacerlo ..) te está restringiendo el acceso de archivos a los que tu sitio manejas .. pero no puedes acceder (por lo menos como lo hace el ejemplo) directamente. La única solución para estos casos es: 1º Mover el archivo subido (por Upload HTTP) con las funciones: move_uploaded_file() hacia un directorio que esté bajo tu control de tu sito (ahí ya no tendrías problemas con "open_base_dir" .. 2º Cambiar la ruta que usa fopen() para abrir el archivo .. En ese caso será la ruta y nombre de archivo que dejes en tu directorio (destino) de tu própio sitio y que indicas en la función anterior (move_uploaded_file() ..) Un saludo, |