3 votes

Comment créer un lien de téléchargement d'un PDF qui ne nécessite pas de clic droit ?

Je travaille sur un site web où le visiteur devrait pouvoir télécharger un fichier pdf. (Il y a trois liens à choisir, mais cela n'a pas d'importance). Je voulais savoir comment faire pour que le visiteur puisse simplement cliquer sur le lien et ne pas avoir à

right click > Save (target) As...

Je suis ouvert aux solutions PHP ou Javascript. Merci de votre compréhension.

EDIT : Puis-je utiliser javascript pour appeler le PHP et enregistrer le fichier via AJAX ?

EDIT2 : J'ai finalement utilisé la solution de Nirmal, car c'était la plus simple à modifier pour les trois fichiers. Je n'ai pas eu besoin de créer 3 fichiers pour les trois PDF et je n'ai pas eu besoin de coder à la main le changement. C'est BalusC qui remporte la palme puisque son code a été publié en premier et qu'il fait aussi l'affaire.

1voto

Nirmal Points 2955

Le code suivant peut vous aider :

<?php
if(isset($_GET['docid'])){
    switch($_GET['docid']){
        case '1':
            $file = 'complete/path/to/pdf/file1';
            break;
        case '2':
            $file = 'complete/path/to/pdf/file2';
            break;
        case '3':
            $file = 'complete/path/to/pdf/file3';
            break;
        default:
            exit;
    }

    if(file_exists($file)){
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
    }
}

Enregistrez ce code dans un fichier php (par exemple, download.php) et appelez-le à partir du lien. Le script lit le fichier pdf et l'affiche dans la mémoire tampon. Les en-têtes forceront la disposition en tant que téléchargement.

Pour appeler le premier pdf, l'adresse URL est '/path/to/download.php?docid=1'.
Pour appeler le deuxième pdf, l'adresse est '/path/to/download.php?docid=2'.
Pour appeler le troisième pdf, l'adresse URL est '/path/to/download.php?docid=3'.

Vous n'avez donc pas besoin d'AJAX pour faire le travail.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X