Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Descargar corrupta de archivos

Estas en el tema de Descargar corrupta de archivos en el foro de PHP en Foros del Web. Buenas tardes a todos. Encontre un Codigo en php que permite forzar las descargas con php pero al momento abrir cualquier tipo de archivo, abre ...
  #1 (permalink)  
Antiguo 22/01/2013, 15:42
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 3 meses
Puntos: 32
Descargar corrupta de archivos

Buenas tardes a todos.

Encontre un Codigo en php que permite forzar las descargas con php pero al momento abrir cualquier tipo de archivo, abre corrupto.

Este es el codigo que estoy usando, muchas gracias por su colaboracion.


Código PHP:

<?php
ob_start
();
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        $_GET
['file'] = 'img.jpg';
        
//$archivo = 'word.docx';
        
$root "";
        
$file basename($_GET['file']);
        
$path $root $file;
        
$type '';

        if (
is_file($path)) {
            
$size filesize($path);
            if (
function_exists('mime_content_type')) {
                
$type mime_content_type($path);
            } else if (
function_exists('finfo_file')) {
                
$info finfo_open(FILEINFO_MIME);
                
$type finfo_file($info$path);
                
finfo_close($info);
            }
            if (
$type == '') {
                
$type "application/force-download";
            }
            
// Set Headers
            
header("Content-Type: $type");
            
header("Content-Disposition: attachment; filename=$file");
            
header("Content-Transfer-Encoding: binary");
            
header("Content-Length: " $size);
            
// Download File
            
readfile($path);
        } else {
            die(
"File not exist !!");
        }
        
?>
    </body>
</html>
<?php
$c 
ob_get_clean();
echo 
$c;

?>
__________________
Como presentar nuestros datos por medio de tablas . clase Aco_DataGrid Version 1.4
  #2 (permalink)  
Antiguo 22/01/2013, 15:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Descargar corrupta de archivos

El error es bastante evidente, ¿si te das cuenta que también estás colocando HTML en el script?

Esa es la razón de que el archivo esté corrupto, la idea es que sólo imprimas la información del archivo pero como tienes HTML entonces se mezcla todo.

Aquí el ob_start() no sirve de nada, que aunque oculta el error del header() finalmente es todo el script el que hace mal el trabajo.

Deja únicamente el código PHP y verás.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/01/2013, 15:58
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Descargar corrupta de archivos

Cita:
Iniciado por pateketrueke Ver Mensaje
El error es bastante evidente, ¿si te das cuenta que también estás colocando HTML en el script?

Esa es la razón de que el archivo esté corrupto, la idea es que sólo imprimas la información del archivo pero como tienes HTML entonces se mezcla todo.

Aquí el ob_start() no sirve de nada, que aunque oculta el error del header() finalmente es todo el script el que hace mal el trabajo.

Deja únicamente el código PHP y verás.
Hola mano tiempo sin hablar, , Muchas gracias claro era eso jaja
__________________
Como presentar nuestros datos por medio de tablas . clase Aco_DataGrid Version 1.4
  #4 (permalink)  
Antiguo 22/01/2013, 15:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Descargar corrupta de archivos

y es precisamente el problema de usar ob_start() como "solución" a usar header() ya que aunque ocultas el error, el error te indica la razón, es mejor no trabajar con ese tipo de cosas y mejor ver realmente porque el header() te marca error.

Etiquetas: html
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 14:06.