Jump to content

Ouverture des documents joints dans une fenetre du navigateur


Recommended Posts

Bonjour à tous,

 

Je reviens vers vous pour un PB que je rencontre, je vous explique : 

 

 

je suis sur Prestashop 1.5.5

je joint à chaque fiche produit des documents (fiche technique et fiche de sécurité) en PDF, je vais donc dans "documents joints" et je les insére comme ça.

Le problème c'est que sur la page produit en front, ça apparait comme un lien de téléchargement : quand je clique j'ai une fenetre qui s'ouvre et qui me demande si je veux l'enregistrer dans mon ordinateur ou l'ouvrir avec acrobat sur mon ordinateur. je voudrais savoir si il était possible que ce document pdf s'ouvre dans un nouvel onglet de mon navigateur comme je pourrais le faire en mettant un lien direct sur pdf. mais je trouve que ça serait plus rapide et plus simple pour moi en passant par "document joint" lors de la création d'un article.

 

Merci d'avance :)

 

 

justine

Link to comment
Share on other sites

  • 4 weeks later...

même question

sur mon ancien site boutique (OScommerce) les pdf s'affichaient dans le navigateur

ce qui a eu pour conséquence de référencer naturellement tous ces pdf

aujourd'hui sous Prestashop

vient donc le problème de la redirection 301 pour ne pas perdre ce bon référencement

l'ancien lien devrait donc être redirigé vers le même pdf (qui au lieu de s'afficher, charge sur l'ordi)

merci !

Link to comment
Share on other sites

  • 4 weeks later...

je crois que je suis sur une piste dans le fichier /controllers/front/getfilecontroller.php, à la fin de la méthode init() (ligne 276 sur ma version)

 

la ou il envoit les header pour le téléchargement...

 

(croix bannière)  :angry:

 

Pourquoi les documents joints ne sont ils pas stockés en clair ???

Edited by bubu3d (see edit history)
Link to comment
Share on other sites

  • 1 year later...

Je fais un petit up parce qu'on ne sait jamais si ça peut aider quelqu'un d'autre...

Je cherchais justement à résoudre ce problème et j'ai trouvé.

Fonctionne apparemment depuis PS 1.5.4.1. (je suis sous PS 1.6.0.14)

 

Il faut overrider le fichier AttachementController.php

C'est à dire copiez le fichier qui est dans controllers/front

et le coller dans override/controllers/front

puis modifier la ligne 

header('Content-Disposition: attachment; filename="'.utf8_decode($a->file_name).'"');

par
header('Content-Disposition: inline; filename="'.utf8_decode($a->file_name).'"');
N'oubliez pas de vider votre cache avant de tester ;)
Link to comment
Share on other sites

  • 2 years later...

Merci pour la réponse.

 

Pour Prestashop 1.7.2 on arrive à forcer ce fonctionnement avec le même type d'override.

 

Il faut créer le fichier /override/controllers/front/AttachmentController.php et y overrider la fonction postProcess de la sorte :

class AttachmentController extends AttachmentControllerCore
{

    public function postProcess()
    {
        $a = new Attachment(Tools::getValue('id_attachment'), $this->context->language->id);
        if (!$a->id) {
            Tools::redirect('index.php');
        }

        Hook::exec('actionDownloadAttachment', array('attachment' => &$a));

        if (ob_get_level() && ob_get_length() > 0) {
            ob_end_clean();
        }

        header('Content-Transfer-Encoding: binary');
        header('Content-Type: '.$a->mime);
        header('Content-Length: '.filesize(_PS_DOWNLOAD_DIR_.$a->file));
        header('Content-Disposition: inline; filename="'.utf8_decode($a->file_name).'"');
        @set_time_limit(0);
        self::readfileChunked(_PS_DOWNLOAD_DIR_.$a->file);        
        exit;
    }
}

Et effectivement, bien penser à vider les caches smarty + navigateur.

Link to comment
Share on other sites

  • 1 year later...

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...