Partage
  • Partager sur Facebook
  • Partager sur Twitter

Téléchargement corrompus

    13 novembre 2019 à 13:15:38

    Bonjour,

    J'ai une fonction qui permet le téléchargement de fichier présent sur le server. Avant hébergé chez OVH tout fonctionnait normalement mais depuis peu le site est passé chez Infomaniak et depuis les téléchargement se lance mais les fichiers sont corrompus ..

    Les fichier Excel et les zip ne veulent plus du tout s'ouvrir tandis que certains doc/docx et pdf eux s'ouvrent.. Quelqu'un à déja été confronté a ce genre de problèmes. 

    De plus la corruption n'a pas l'air de venir de l'upload car si je télécharge le fichier directement depuis le serveur je peux l'ouvrir sans problème.

    En éditant le fichier je ne vois pas de message d'erreur de php qui pourrai avoir corrompus le fichier..

    Voici le code de la fonction:

    function downloadFile($name, $path)
    {
        if (file_exists($path)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="' . $name . '"');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($path));
            ob_clean();
            flush();
            readfile($path);
            exit;
        } else {
            return false;
        }
    }


    PS: j'ai déjà essayé avec ou sans les "ob_clean(); flush();"

    Et avec un "content-type" pour fichier Excel,...

    Et le code tels quel fonctionnait sous OVH .. et plus maintenant.

    Merci d'avance aux lecteurs.

    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2019 à 17:48:06

      Personne n’a rencontré de problème similaire ou aurait une piste ?
      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2019 à 11:39:08

        Bonjour,


        Pour moi ton problème viens de là:

        header('Content-Type: application/octet-stream');


        pour des fichier zip ça devrai être 
        header('Content-Type: application/zip');




        • Partager sur Facebook
        • Partager sur Twitter
          14 novembre 2019 à 17:46:43

          Bonjour,

          merci de la réponse mais j’ai déjà essayé et de même avec content-type:application/vnd.ms-excel pour les fichiers excel mais idem corrompus .. alors que encore une fois avant le changement d’hébergement le script fonctionnais tel quel :/ 

          -
          Edité par ArnaudRmks 14 novembre 2019 à 17:47:44

          • Partager sur Facebook
          • Partager sur Twitter
            15 novembre 2019 à 13:23:12

            J'ai fait une requête à infomaniak pour voir si il n'y a rien à activer chez eux ou autre mais ça peu quand même venir du code :/
            • Partager sur Facebook
            • Partager sur Twitter
              15 novembre 2019 à 13:26:34

              Salut

              Est-ce que tu as comparé les réglages de PHP entre Infomaniak et ton précédent hébergeur ? Comme tu nous dis que le code n'a pas changé, il faut voir si c'est pas au niveau du php.ini

              Edit

              Si jamais, deux messages à la suite du même auteur dans un sujet, c'est à 24 heures d'écart, pas 19 et encore moins 4 et demie.

              -
              Edité par Ymox 15 novembre 2019 à 13:27:57

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                15 novembre 2019 à 14:53:13

                bonjour

                ArnaudRmks a écrit:

                Les fichier Excel et les zip ne veulent plus du tout s'ouvrir tandis que certains doc/docx et pdf eux s'ouvrent.. Quelqu'un à déja été confronté a ce genre de problèmes. 

                De plus la corruption n'a pas l'air de venir de l'upload car si je télécharge le fichier directement depuis le serveur je peux l'ouvrir sans problème.

                La première idée qui me vient en lisant ces lignes est que le code PHP génère au moins un Warning/Notice/Fatal error chez le nouvel hébergeur qui était inhibé/inexistant chez l'ancien hébergeur. Un petit test simple:

                var_dump(
                  preg_match_all(
                    '#<b>(Warning|Notice|Fatal error)(?:</b>)?:#i',
                    file_get_contents('le_fichier_corrompu')
                  )
                );

                Sinon est-il possible de télécharger l'un de ces fichiers corrompus pour voir ce qui le rend inutilisable?

                • Partager sur Facebook
                • Partager sur Twitter
                  15 novembre 2019 à 14:54:05

                  un idée qui me viens, les fichiers que tu tente de faire télécharger, d'ou proviennent t'ils? sont-t'ils uploader avant par les utilisateurs?
                  Si c'est le cas la corruption peux se faire sur l'upload et non sur le download, vérifie dans ton php.ini le upload_max_filesize

                  -
                  Edité par coolswing 15 novembre 2019 à 14:54:17

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 novembre 2019 à 0:20:00

                    @ymox

                    merci pour la réponse, je vais vérifier ça en effet ! 
                    désolé pout les messages à la suite

                    @festin

                    je vais tester ça pour voir, merci de la piste et de la réponse, malheureusement il n’est pas possible de télécharger un des fichiers, ils faut être authentifier dans le système 

                    @coolswing

                    les fichiers sont bien upload par les utilisateurs mais j’ai déjà vérifié de télécharger un fichier fraîchement  upload directement depuis le serveur et celui-ci s’ouvre correctement. par contre téléchargé depuis le site ça ne va pas. merci quand même pour le retour 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 novembre 2019 à 15:16:41

                      Bonjour,

                      J'ai testé vos piste, le php.ini semble tout à fait correcte.

                      Pour le bout de code de @festin, j'ai testé sur plusieurs fichiers corrompus et il me retourne 0. Est-il possible que l'erreur ne soit pas en clair dans le fichier et que du coup le preg_match_all ne fonctionne pas ?

                      Infomaniak ne réponds pas en plus.

                      Je ne sais pas trop quoi faire pour le coup.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Téléchargement corrompus

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown