Tengo el siguiente, subo archivos a la base de datos con un script (Cargar archivo) y luego para ver-lo he creado un link que me abre el archivo en el navegador mismo.
Pero sólo me deja visualizar unos pocos pdfs, he ido probano y tengo la suposición que los otros archivos tienen un tamaño mayor.
Cuando intento ver estos archivos que no van, me sale "Failed to load PDF document".
No sé si mi suposición es correcta o si alguien se ha encontrado con un problema similar haber si podéis ayudar-me.
Muchas gracias, a continuación los códigos comentados.
Cargar archivo en la BBDD
Código HTML:
Ver original
<html> <head> <META http-equiv="Content-Type" CONTENT="text/html; charset=utf-8"> </head> <body bgcolor="#F75353"> <center> <?php include '../header.php'; ?> <?php require_once ('../conexion.inc.php'); $db1 = mysql_connect($servidor,$usuario,$password) or die("Error al conectar al DBMS."); mysql_select_db($basedatos) or die("Error al conectar a la BD"); set_time_limit(0); // Datos de conexión a configurar $directorio = "../../subidas/"; // Recibo los datos $IdRFQ = $_POST['txtidrfq']; $Data = $_POST['txtdata']; $ProjectName = $_POST['txtProjectName']; $ProjectPartNombre = $_POST['txtProjectPartNumber']; $Customer = $_POST['txtCustomer']; $RMPartNumber = $_POST['txtRMPartNumber']; $Description = $_POST['txtDescription']; $Suppliers = $_POST['txtsupplier']; $Price = $_POST['txtprice']; $Cry2 = $_POST['txtcry2']; $MOQ = $_POST['txtmoq']; $Volume = $_POST['txtvolume']; $Investment = $_POST['txtinvestment']; $Delivery = $_POST['txtDelivery']; $Timing = $_POST['txttiming']; $Cry = $_POST['txtcry']; $Responsible = $_POST['txtResponsible']; $Incoterms = $_POST['txtincoterms']; $Comments = $_POST['txtcomments']; $nombre = ''; if(!empty($_FILES['archivo']['name'])) { //aqui recibo el archivo $nombre = $_FILES['archivo']['name']; $tipo = $_FILES['archivo']['type']; $tamano = $_FILES['archivo']['size']; // muevo el archivo del temporal al directorio definitivo //move_uploaded_file($_FILES['archivo']['tmp_name'],$directorio.$nombre); //asigno la ruta y nombre del archivo para almacenarlo $fichero_subido = $directorio.$nombre; $fp = fopen($_FILES['archivo']['tmp_name'], "rb"); $binario = fread($fp, $tamano); $binario = addslashes($binario); fclose($fp); } $q1= "INSERT INTO rfq (idrfq, data, ProjectName, ProjectPartNumber, Customer, RMPartNumber, Description, suppliers, Unitprice, cry2, moq, volume, investment, Delivery, timing, cry, Responsible, incoterms, Comments) values ('$IdRFQ','$Data', '$ProjectName', '$ProjectPartNombre', '$Customer','$RMPartNumber', '$Description', '$Suppliers', '$Price', '$Cry2', '$MOQ', '$Volume', '$Investment', '$Delivery','$Timing', '$Cry', '$Responsible', '$Incoterms', '$Comments')"; $result = mysql_query($q1) or die ("No se pudo ejecutar la consulta"); if( !empty($nombre) ) { $q1= "INSERT INTO archivos (archivo_binario, archivo_nombre, archivo_peso, archivo_tipo, IdRFQ) values ('$binario','$nombre', '$tamano', '$tipo', (SELECT MAX(IdRFQ) FROM rfq))"; $result = mysql_query($q1) or die ("No se pudo ejecutar la consulta"); } if($q1){ $msg = "Datos cargados"; } else { $msg = "Datos no cargados"; } if(mysql_query($q1,$db1)) echo 'Se ha creado correctamente'; else echo '¡¡Error en la creación!!</br>El servidor responde: '.mysql_error(); mysql_close(); ?> </center> </body> </html>
Ver archivo
Código HTML:
Ver original
<?php if(isset($_GET['IdRFQ'])) { $servidor = "localhost"; $basedatos = "bd_ofertas_para_productos"; $usuario = "root"; $password = ""; $link = mysql_connect($servidor,$usuario,$password) or die('Problemas al conectar'); mysql_select_db('bd_ofertas_para_productos') or die("Error al conectar a la BD"); $IdRFQ = $_GET['IdRFQ']; $qry = "SELECT * FROM archivos WHERE IdRFQ=$IdRFQ"; $res = mysql_query($qry) or die("Error en la consulta"); $contenido = mysql_result($res, 0, "archivo_binario"); $tipo = mysql_result($res, 0, "archivo_tipo"); $nombre = mysql_result($res, 0, "archivo_nombre"); $peso = mysql_result($res,0,"archivo_peso"); header("Content-type: $tipo"); header("Content-length: $peso"); header("Content-Disposition: inline; filename=$nombre"); print $contenido; } ?>