Jump to content

Module - Impossible d'utiliser header() pour forcer le téléchargement


Recommended Posts

Bonjour à tous,

J'ai développé un petit module avec un Front Controller qui ne fait qu'une chose: forcer le téléchargement d'un PDF.

J'utilise Prestashop 1.7.8.6 et le serveur est sous PHP 7.4

J'utilisais ce module sur une autre config PHP 7.3, sans problème, mais sous PHP 7.4 il est impossible d'utiliser la fonction header() dans le Front Controller, car Prestashop semble déjà faire un output en amont :

 

Quote

Warning: Cannot modify header information - headers already sent by (output started at /xxx/modules/monmodule/controllers/front/downloadPdf.php:1) ...

 

Une idée d'où peut venir l'output? (Je précise que le mode debug est désactivé).

Voici le code du Controller:

 


<?php
class MonmoduleDownloadPdfModuleFrontController extends ModuleFrontController
{
    public $ssl = true;
    public $ajax = false;
    public $auth = false;
    public $guestAllowed = true;
    public $template = false;

    public function __construct()
    {
        parent::__construct();
    }

    public function init()
    {
        if (!Tools::getIsset('doc')) {
            die("Error");
        }

        $filepath = //MYPATHHERE ;
        if (file_exists($filepath)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="'
                . basename($filepath) . '"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($filepath));

            // Flush system output buffer
            flush();
            readfile($filepath);
            die();
        }
    }

    public function display()
    {

    }
}

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...