Foros del Web » Programando para Internet » PHP »

header o readFile corrompe el archivo

Estas en el tema de header o readFile corrompe el archivo en el foro de PHP en Foros del Web. Tengo el siguiente script, que para una variable determinada (file) entrega un archivo doc: Código PHP: <?php if (!isset( $_GET [ 'file' ])) die(); $file  =  $_GET ...
  #1 (permalink)  
Antiguo 09/06/2010, 20:42
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Tengo el siguiente script, que para una variable determinada (file) entrega un archivo doc:

Código PHP:
<?php
if (!isset($_GET['file'])) die();
$file $_GET['file'];
$TextSql "SELECT * FROM adjuntos b WHERE file_hash ='$file'";
$Data->ConsultaLibre($TextSql$vRegistros$numTot$campos);
// Solo usuarios identificados
if (isset($_SESSION['user_id'])) {
    if (
$_SESSION['user_id']=="") die ("No está autorizado para ver el documento");
} else {
    die();
}
$file $vRegistros['b.filename'][0];
$original $vRegistros['b.original'][0];
$url "rep/adjuntos/".$file;
header ("Content-Disposition: attachment; filename=".$original."");
header ("Content-Type: application/msword");
header ("Content-Length: ".filesize($url));
readfile($url);
?>
La variable file contiene un campo de la bd que nos da el nombre del archivo que se encuentra en la ruta rep/adjuntos.

El caso es que trabajo en local, y puedo abrir perfectamente los archivos que se encuentran en la carpeta de adjuntos: "rep/adjunto/loquesea.doc". Sin embargo, cada vez que ejecuto el código, tanto si eligo la opción de "abrir" como "guardar", Word me dice que la codificación es incorrecta.

Lo curioso es que si lo guardo en la misma carpeta con otro nombre, obtengo dos archivos iguales en kb, y sin embargo, el «descargado» parece que tiene una línea en blanco delante y no puede abrirse.


¿Problema de Word, de PHP, de Apache, o mio?

Estoy deseperado

Última edición por GatorV; 11/06/2010 a las 13:41

Etiquetas: header
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:18.