Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2008, 10:14
gazpachoymochil
 
Fecha de Ingreso: febrero-2005
Mensajes: 105
Antigüedad: 19 años, 2 meses
Puntos: 1
Campos BLOB (no lo almacena)

Hola, estoy intentando almacenar pdfs en una BBDD. Ya sé que la mejor opción es almacenar en un campo la ruta del fichero y que cuando éste sea requerido se cargue el fichero desde la ruta almacenada, pero prefiero hacerlo así porque me es más fácil hacer una copia de seguridad de la BBDD entera. Bueno, mi problema es que no logro almacenar el fichero pdf en la BBDD. Mi código es el siguiente:

Formulario XHTML:

Código:
<form class = "Formulario" enctype="multipart/form-data" action = "crearNuevaPublicacion.php" method = "POST">
    <table>
	<tr><td>DOI (Identificador de Objeto &Uacute;nico): </td><td><input name = "DOI" type = "text" /></td></tr>
	<tr><td>T&iacute;tulo: </td><td><input name = "titulo" type = "text" /></td></tr>
	<tr><td>Autor (es): </td><td><input name = "autores" type = "text" /></td></tr>
	<tr><td>(*) Resumen: </td><td><input name = "resumen" type = "text" /></td></tr>
	<tr><td>Palabras Clave: </td><td><input name = "palabras_clave" type = "text" /></td></tr>
	<tr><td>(**) CDU (Clasificaci&oacute;n Decimal Universal): </td><td><input name = "CDU" type = "text" /></td></tr>
	<tr><td>Idioma: </td><td><input name = "idioma" type = "text" /></td></tr>
	<tr><td>ISSN: </td><td><input name = "ISSN" type = "text" /></td></tr>
	<tr><td>Fichero: </td><td><input name = "fichero" type = "file" /></td></tr>
	<tr><td><input type = "radio" name = "eleccion" value = "1" /> Publicar</td></tr>
	<tr><td><input type = "radio" name = "eleccion" value = "0" /> Guardar como borrador</td></tr>
	<tr><td><input type = "submit" value = "A&ntilde;adir a BAE" /></td></tr>
	<tr><td colspan = "2"><hr /></td></tr>
	<tr><td colspan = "2">(*) Campos no obligatorios.</td</tr>
    </table>
</form>
crearNuevaPublicacion.php

Código:
......
// Recogemos los datos del formulario.
    $doi = $_POST['DOI'];
    $titulo = $_POST['titulo'];
    $autores = $_POST['autores'];
    $resumen = $_POST['resumen'];
    $palabras_clave = $_POST['palabras_clave'];
    $cdu = $_POST['CDU'];
    $idioma = $_POST['idioma'];
    $issn = $_POST['ISSN'];

    // Preparamos los datos del fichero.
    $tamanyo = (($_FILES['fichero']['size']/1048576));
    // $fichero = addslashes(file_get_contents($_FILES['fichero']['tmp_name']));
    $fichero = addslashes(file_get_contents($_FILES['fichero']['tmp_name']));
    $fecha_insercion = date("Y-m-d", time());
    $contenido_valido = $_POST['eleccion'];
    $idNombre = $_SESSION['nombreUsuario'];
    $idClave = $_SESSION['claveUsuario'];
    .....

    // Insertamos la nueva publicación en la Base de Datos (eleccion = 1 -> pública: eleccion = 0 -> borrador).
    insertarPublicacion ($doi, $titulo, $autores, $resumen, $palabras_clave, $cdu, $idioma, $tamanyo, $contenido_valido, $fecha_insercion, $issn, $fichero, $idNombre, $idClave, $eleccion);
    .....
insertarPublicacion():

Código:
    ......
    $conexion = conectar ();

    $resultado = mysql_query ("INSERT INTO publicaciones (DOI, titulo, autores, resumen, palabras_clave, CDU, idioma, tamanyo, contenido_valido, fecha_insercion, ISSN, fichero, nombre_usuario, clave_usuario) VALUES ('" . $doi . "','" . $titulo . "','" . $autores . "','" . $resumen . "','" . $palabras_clave . "','" . $cdu . "','" . $idioma . "','" . $tamanyo . "','" . $contenido_valido . "','" . $fecha_insercion . "','" . $issn . "','" . $fichero . "','" . $idNombre . "','" . $idClave . "');");

    cerrar ($conexion);
        .....
El tema es que todo lo hace bien excepto almacenar el pdf en la BBDD. El tipo del campo el "longblob" y el fihcero que intento cargar ocupa 1,10 MB, es decir, no excede el tamaño permitido en el fihcero de configuración de mySQL. He mostrado las variables por pantalla y las muestra correctamente. Es decir, DOI = 00.0000/0000, titulo = Título del pdf,...., fichero = %PDF - .........056%%EOF,...). Así que, supongo que algo se me está escapando....¿Alguien podría decirme el qué? He estado mirando tutoriales y no encuientro el error, incluso utilizando phpMyAdmin he introducido los datos a mano y copiado la consulta sustituyendo las variables, pero nada. Me sería de gran ayuda que alguien me hechase una manita. Muchas gracias!!