Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/12/2018, 13:12
Murallitz
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 376
Antigüedad: 23 años
Puntos: 0
Descarga de archivos mysql - archivo dañado

Buenos dias, estoy grabando documentos (docx, xlsx) en mysql (long bob)
Este es el código de subida:
Código PHP:
$Doc_tmpname $_FILES['documento']['tmp_name'];  
$Doc_Tipo $_FILES['documento']['type']; 
$Doc_Nombre $_FILES['documento']['name'];
$Doc_Tamano $_FILES['documento']['size'];
$Doc_ext=pathinfo($Doc_NombrePATHINFO_EXTENSION);
$accion ="1";
$fp fopen($Doc_tmpname'r');
$contenido fread($fpfilesize($Doc_tmpname));
$contenido addslashes($contenido);
fclose($fp);
/*Grabamos Documento*/

if($Doc_ext=="png"||$Doc_ext=="PNG"||$Doc_ext=="JPG"||$Doc_ext=="jpg"||$Doc_ext=="jpeg"||$Doc_ext=="JPEG"
        
||$Doc_ext=="pdf"||$Doc_ext=="PDF"||$Doc_ext=="doc"||$Doc_ext=="DOC"||$Doc_ext=="docx"||$Doc_ext=="DOCX"
        
||$Doc_ext=="XLS"||$Doc_ext=="xls"||$Doc_ext=="XLSX"||$Doc_ext=="xlsx"||$Doc_ext=="xlsm"||$Doc_ext=="XLSM")


{
$Activo=1;
$grabadocumento $mysqli->prepare("INSERT INTO tb_documento (Nombre,Tipodoc,Fecha,Activo,Data,ID_Empresa,Size) VALUES ('$Doc_Nombre','$Doc_Tipo', '$Fecha','$Activo','$contenido','$ID_Empresa','$Doc_Tamano')");
$grabadocumento->execute(); 
$grabadocumento->close();

y este es el de descarga

Código PHP:
$ID_Documento $_GET['ID_Documento'];
$consulta "SELECT Nombre, Tipodoc, Data, Size FROM tb_documento WHERE ID_Documento=$ID_Documento";
$resultado=$mysqli->query($consulta);
$fila $resultado->fetch_assoc();
$Doc_data $fila['Data'];
$Doc_nombre $fila['Nombre'];
$Doc_tipo $fila['Tipodoc'];
$Doc_size $fila['Size'];

         
header("Content-length: $Doc_size");
         
header("Content-type: $Doc_tipe");
         
header("Content-Disposition: attachment; filename=$Doc_name");
       
ob_clean();
         
flush();
         echo 
$Doc_data;
         
$resultado->free();
         exit; 
El problema es que al descargarlo abre el archivo y sale este mensaje

"El archivo XXXXX.docx no puede abrirse porque hay problemas con el contenido"
Luego que se le da aceptar sale:
"Word encontro contenido no legible. ¿Desea recuperar el contenido de este documento?"
Le das aceptar y se abre, pero la idea es que esto no aparezca pues se ve mal.

Ya hice echo de los datos que trae desde la tabla y son estos:
$Doc_tipo= application/vnd.openxmlformats-officedocument.wordprocessingml.document
$Doc_size= 1530
$Doc_nombre= nombre.docx

Que podria ser?
uso PHP:7.0.15
y Mysql : 5.6.32

Saludos