Re!
Rien du tout, c'est moi qui me suis embrouillé! Maintenant c'est tout bon, normalement tout devrait fonctionner!
Jusqu’à maintenant je tâtonnais pour résoudre les problèmes sans vraiment comprendre, j'ai compris et je n'ose pas en parler tellement c'est nul...
Dans tout les cas tu télécharge le module ici:
https://www.monxoops.fr/modules/xmdoc/document.php?doc_id=8C'est la version 1.22 finale!
Tu écrase juste les fichiers et tu mets à jour le module, ensuite tout fonctionne (enfin j'espère!).
Alors l'explication est très simple, je commence:
pour faire une redirection sur le fichier à télécharger j'utilisais:
Header("Location: $url");
La variable $url est l'url du fichier à télécharger!
Le 16 janvier 2019 j'ajoute:
Header("Content-Length: $contentLength");
Cela permet de faire passer la longueur du fichier au navigateur (avantage l'avancement de téléchargement fonctionne).
$contentLength est calculé d'après la taille du fichier que nous avons uploadé. Sauf qu'il s'agit d'une fonction maison qui converti la taille en octet.
Tous les problème viennent d'ici... La fonction que j'ai écrite ne donne pas la valeur exacte. J'aurai du utiliser la fonction:
filesize()
Elle donne la taille du fichier passé en paramètre. Sauf que je dois avoir un chemin physique et pas une url (je pense que c'est pour cette raison que je n'ai pas utilisé cette fonction car je devais convertir l'url en chemin physique)
Le 13 avril 2020 je remarque que certains fichiers ne se télécharge pas, je ne sais pas pourquoi mais j'ajoute un petit echo et ça fonctionne:
$contentLength = XmdocUtility::StringSizeConvert($document->getVar('document_size'));
echo $url ;
Header("Content-Length: $contentLength");
Header("Location: $url");
Le problème est toujours le même la taille réelle du fichier n'est pas forcément identique à ma valeur calculée, le "echo" semble (uniquement sous windows) aider à finaliser le téléchargement.
Ne jamais faire un truc qui corrige un problème sans savoir pourquoi!
Et la on arrive le 11 mars ou j’intègre le système qui force le téléchargement. Je n'ai pas le chois, je dois avoir un chemin physique alors je converti l'url en chemin physique et je ne n'utilise pas la fonction "filesize()" pour la taille du fichier mais toujours ma fonction.
Tu me remonte un bug alors comme il y a une année j'ajoute un "echo" et ça fonctionne sous windows. Sauf que sous linux cela ne fonctionne pas.
Tu va me dire pourquoi ça fonctionnait de temps en temps et cela même sous linux? Car si ma fonction retournait exactement la bonne taille du fichier alors tout fonctionne. Sauf que cela n'est pas toujours le cas et c'est pour cette raison que le bug est aléatoire. Avec de la chance les tailles sont identiques et cela fonctionne sinon cela ne marche pas.
Maintenant j'ai viré les "echo" et j'utilise la bonne fonction pour la taille des téléchargements.
Donc tout fonctionne bien.
Bref un bogue bien difficile à trouver, c'est une succession de petites erreurs....
Dans tout les cas merci pour tes retours qui font avancer mon module!