Pregunta

Tengo la siguiente función para forzar descargar un archivo:

static public function download($file, $options=array()) {
    $content = (isset($options['content'])) ? $options['content'] : '';
    $contentType = (isset($options['contentType'])) ? $options['contentType'] : '';
    header('Cache-Control: public');
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename='.File::filename($file));
    header('Content-Type: '.$contentType);
    header('Content-Transfer-Encoding: binary');
    if ($content!='') {
        echo $content;
    } else {
        readfile($file);
    }
}

Envío un archivo PDF y contentType = "Application/PDF". El problema es que cuando intento abrir el archivo PDF descargado, dice "Hubo un error que abrió este documento. El archivo puede estar corrupto". Es extraño porque puedo abrir el archivo original y se ven exactamente igual (nombre de archivo, tamaño, etc.)

¿Fue útil?

Solución

Asegúrese de que no haya salida antes de que se ejecute esta función y, en buena medida, use el exit construir al final de esta función :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top