IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

ForceDownload .docx fichier corrompu


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut ForceDownload .docx fichier corrompu
    Bonjour à tous,

    Je post ceci car j'ai un petit problème que je n'arrive pas à cerner quand à un téléchargement d'un fichier .docx en php.

    Pour des raisons de simplicité, j'ai recréé ma situation sous forme de test et voilà ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
     
    	 forceDownload("Devis_bis.docx", "./file/Devis.docx", 6000000);
    	  function forceDownload($name, $location, $size)
    	  {
    		header('Content-Type: application/octet-stream');
    		header('Content-Length: '. $size);
    		print($location). "\n";
    		header('Content-disposition: attachment; filename='.$name);
    		header('Pragma: no-cache');
    		header('Content-Transfer-Enconding: binary');
    		header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    		header('Expires: 0');
    		readfile($location);
    		exit();
    	  }
    }
    L'arborescence de mes fichiers est la suivante :

    Nom : lolo.png
Affichages : 323
Taille : 44,9 Ko

    Et lorsque le téléchargement se fait, non seulement la taille du fichier est de 1ko, soit vide, mais lorsque je l'ouvre sous notepad :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    PK     !  󪈁  ى   [Content_Types].xml „(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ĖOГ0ƯH|ȈWԸۇŐӽ,pĕ(Wמզ��ܾ{ljeޔt#.֒ڷ߯텶��񄱩૶SΘNzƝۦ?ןʏ͈(ܒƻəܛݽ3_ĂԮ֬Ø>rߤ͈Տ੒𨅒c\󠤣XߝΞs靂ÒӇ[̿A#ֆ̏{򻣹`͊󮱧֌ܬЖ𠦧܁ɾ̕aMӞʄFK”萎=ۦ<NRѲһj8Ӑ+烎ۯԅQ+(DįÒ࠹ȸ򲫉Yެ3i܆K鶙-D/!%ۛkʾbƶ'��M鮏kنЏчts5No۽ †~
    ϮƛڕDÿ��G!ŗ'齇けS އvѺ>ş棠η轎ћ޵(85ĉyaBAݾܼˠ3ߨ&ʯ̯ݿ��A��ٔ+S·!Ў~龯Zۗ"ɳ=ɨ*��ߕe٨ꔉ򪹠_ȁlߞ̖߁  ��PK     ! њد   N   _rels/.rels „(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ̒ªð@đޑہĎ/cћه[ILܘjؾ��]ꢇ̒ӓѺs݆u՝𚖕
    ʽ	׹^ě󼸠Յܥ1xװ⌛緦��)ʃ̙ˏҸȘ΀嫄��i")Дc$ӣ߱Uطپ31֖jH[{ʽEކێ~
    f?ї3-ЏÞӝŔꓸ2Ϊ)��0/%ܑb̊𼑪zÿȅɅ,	Iɯ󼦜Z��?6՟⯛ݝA󁠠��PK     ! F‚%u  [   word/_rels/document.xml.rels „(                                                                                                                                                                                                                                                                 ܖΎðůH݃伱RJ񑓞RА$Ϯ݉ѝڛJߞ˨Ɂע᳜ɼ󩷬e:��Ɗ͊ҧI@՚U庹pqČqתق%󙹙��Dg؅ق4ɝŶl@2ܪջRi#ےԴc囫NӬBΟČߵLܠf]��_z몒%ݫr-A။*ųv
    ٩"K֋y򚁍顈��ǩFVǠ²XܶnՃD_Ǯϱ󫘶8Ө씐B>ˉPi訶}=
    D��㯚aЂSȉQέj񢜆ȴݫT ȼD3ɽҟ٘ŠHÎāǽ`��W1��Doޘ݄TtgݗꬬƠ&򬴷40ϺT��	!ܞ>ҡDށŕ.٪��;
    򭗠����PK     ! ̉.͙f  "    word/document.xml쾋r䉲wG🪴ȩʐïʬ�(ҚQه͐4sݨEʺA [ (��⠰ƻ듽ӽܛoΰЌ׸3̀ WH˪焏H㒈ˊwf%��߃򂅒sࠬ��ؖgKػf秛ӽڎB񜱦磈v����c۳žpCCف񝯽ٹ
    C��ѮEχ󽩩/𺡾济ݎGZ㡎S��,з_yֈx^û}왡zЇ󼡂ɎȺ<ğ˻ѣ네¨>e[:2􈣗Ϣaܷ;ҲЍ{Cpף
    ѹɯPӼWࠒ4'(᠌ޛ݊?چ£‰ܸѾʼn��ݝ_̼m
    ڊࠁG2ୠܺƞá߼bѰÊу;f!󌘒خ򠅐Ԃn񰾁JÃ𝧭Ϸʋ��Ցϝñг癋,rzj“9ߥ>p`Ϻ>ﺞ㭇 ¥cuǤ޳ȭٟ񓧷ǠҬ˷;Ƃޙ9˗vㄍҡѓ>>sٺDĜ*��񾷞쩙ݍw𠒧ԙ熁ݧeݿesأȷu7H{$��,״񠗆Һv`q`@ϯvb׊ޕ֓čڭ˟Ȩᨘ@ȓ- 蠐1ğƣxw鈟ǧ؜ɠτ򸲁I=
    撱᳋ćЄ T_읬2GЕ°36﯏頽}޵җ&Ӓ
    ?ݭ~o߲}ʗ򔗅ݛ`؀޴`﷬܊��Ά}
    ђ֡Gt׃ãʂ+ҀǼḞИTɹڬʔͽڨĽs񮇯ퟣ�ҶzZ}]k-FϏﲪ��Ҳ˭ǐGƴX~^꘻֥4Ի㨾ɁG̮Rݹ��ǂň⥚Z2ճҒ菳@��:ދ<^Kퟐ�َwZࠝ˜ݟ\ֲƞƢts񹒑mfdά]Ъޕ䶦U컺Ć׆u0,󙃉Kw񞌨Z01ּʕ㒤+JŒY͜+j擤+ʇւ䫪ƊH+ϏȀڐ]ޕG檔HОW͚Ǹ]eo 񶞵[ࠜ޻ީ࠽ǍԽ'��ܖ(͋]BϴήOȣђLqt��fœ:ʥ9ڿ?:"ǀ%Wܫٿ+l∠$ԯYΡإȨ1ǻvFۙͻĪԔhΌȠ9Ώ2ׯ`F
    ҩŎDȫɝ=ćœ𩆇%ϘsƳݺ٢xʕ̧ճ񲚼̜e\餳ٶÛŗ6׌uRW6ÙE𼳎MϜ*՚͵MNOhY*z̐)��MӋי��]U߃Ѹ}zаבkƴŇ·͞Nӵ򻂿ןGAxƫ{hyپńO$֭R6@<,߃Ӄ"МxQzퟜ�P׍1[0dz̳;һנ̈́߆ſܯ~e⠡艮;xk=E��|QΔʉJᳺחǺJȆNjၠ`Hf��Ľ/ա񡖠҈̧,΄ܽ5x`t*򃃸\*r˛pJ��̖jIț۸ژ磙،랥ɣ̮Ř|b𲧪{҂N󇏊z�� fʔҩ41Jg ʏiӪ_y
    Գ{Ӆ��!R*ИڸP,ae䡚ʧ?󼔖x��/fMڧGƲuĕ򘸗Hã��TѤ"Ԫ|ɯEþE]*ӁˤʸGҮP^٘<ȣ{f̀����>Mƒې񇜙,Ϫ䘬Qd$ơ%ۥٴ={𠃹ϗՂIՍЀϘ`ؠƥ챰mІݩ]6ퟓ���4��Ų?bÈŽҢ򦿞֞g-Vë֣֟䌍qG��ϕC4Ȑ("`@Á򗞄ԭŌޘXBᅤ,ӽǗ󾒁GރƩ;qnݲ|Ԡ滨񺄗񖣒 x乎h;DZ36hծȴՠ΀,nڛ񋹲U㒮"򂓉桄էhґ=	 ia ��>ߑOаǕ8}궑S`ݷ;ƂⱤn)i᱇UĻ3pħ룼M݆AҐhֲҒshsѶĭԱ٪&ۆߜXd:唼��M>.ݾ;+򼢁虮꯮wɼЃ��wȦ;|��sE몼¥ءoȃooȟpEqu��UL̺ǑKւɆWXࠬKӃŋ:P殽)Ɖϼ͗Њ𥍷ȉg��&mfdpPߣ]h狗X�� ͳȱ&��牛к٭j|κ/«5H
    ՃῳSԨܼ��5TӇ݅J.0ԯ-勘
    ޝ󃰠ۓGs󗒂9㐀ƙ̂ݖCʀZ��󝄛|-މX|4��ܿ~g뙴ڂV緦̸ܛ 4ߴb��
    ЋȻ΃BcВȶ��սj•͔*֢Ę𗼻X9΂$ВͻD
    B��Ɉ/ȇzkJ떿v`~Wäցꄡ#ٿ��񱽇��`��桚	ܗA𽰺ߠBB(򒸒ξ>}ƿ銔Qǿkϐƒ̐ÌІY
    >Fׯ\��JӓțR걽��V+��ڡF“Z`ƅ򘍔򘎤o䤂ϾZʠ㬧16̇ƒi|ʃ㡄ц^rǾ̦ho$ṔbܽaȧXέ԰/򓥸ڿퟫ�跷W-ֺعࠉVʌޛXࠤ塢0דpYlࠬ#.-¹43ȁۢ oݷ	PAt��-«ڵià㌮}Ǔ:גY駝yzr󯞠ࠌƳKռI/CÌG�Z_ܤ3ϣ™¨�j?ߟ_߿܈ƯVŠևҟØK1wnL:)Sб񗇹c؉3؎0ퟢ�t(C��rĖ`vyl}ṮΦeݖ̩ʵOԉF0݂!vQQD*쯔M2>`-
    E{͸=%عYՀٯ;Ң2 ̼'ıƐ ΃( N=DHa𐅔śڎf>\*OG({ѡǡ����嚝��pEۇװ͜X»ޗ⣯DG` ‚ҸЯfƙǀ좢"nD̥8^șLƯWُ>ޚQƖH򭓦{Tz]\iҠʋɀʨև4Z҆һA)Ѯقքס2$J7񕁃��Ǹƺ֕K徢��6-䋥	춲̍bݵ#ө߬Ԁ��X9EĝHך􎢑姊@EƗ҂|i~׊ӧR=Oۃ߂4kĥpGۜդσĄퟢ�ʛD#>ָ&᧪³ ծӻɂ!-ӍdQ~+[̴5ҋ׼
    L޵ţ9՟؇gδ՘ߍ#BP$aT7ʋd:ͻ?Yq5͖>٥gz\/<ʍՆvăЊء��3ɽ:Ҟ٦갶ǒ]֌޿]nI߈󥒼C ä˖ӡϘdj𻗔nJk$��ĢH}fy̒桢%ΖΆԜȚX״🜬ƕܙK]ӄU;`H"{
    'ȃ#L󰀊
    NՆq񃈥ήʦ
    ĥØ񮢭S̕ɡBp
    ̻̙)rHȘ#sVDʑhٶz[q,{żA͆Bҩ
    A quelques caractères près...

    Merci d'avance pour votre aide !!
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Citation Envoyé par magicarpe44 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
     
    	 forceDownload("Devis_bis.docx", "./file/Devis.docx", 6000000);
    	  function forceDownload($name, $location, $size)
    	  {
    		header('Content-Type: application/octet-stream');
    		header('Content-Length: '. filesize ( $name ) );
    		//print($location). "\n";
    		header('Content-disposition: attachment; filename="'. basename ( $name ) . '"' );
    		header('Pragma: no-cache');
    		header('Content-Transfer-Encoding: binary'); // un n en trop dans Enconding
    		header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    		header('Expires: 0');
    		readfile($location);
    		exit();
    	  }
    }
    Salut,

    Avec les modifications en rouge, ça se passe mieux ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Bonsoir,

    Merci pour votre aide !

    Et bien après modifications, plus de problèmes de corruption ... MAIS (bien sûr, sinon c'est pas drôle), document word totalement vide, nu, aucun caractère, page vierge..
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    forceDownload("Devis_bis.docx", "./Devis_bis.docx", filesize ( "Devis_bis.docx" ) );
    
    function forceDownload ( $name, $location, $size ) {
        header ( 'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document' );
        header ( 'Content-Length: '. filesize ( basename ( $name ) ) );
        header ( 'Content-Disposition: attachment; filename="'. basename ( $name ) . '"' );
        header ( 'Pragma: no-cache' );
        header ( 'Content-Transfer-Encoding: binary' );
        header ( 'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0' );
        header ( 'Expires: 0' );
        ob_clean();
        flush();
        readfile ( $location );
        exit();
     }
    ?>

    http://php.net/manual/fr/function.ob-clean.php
    Je ne sais pas si flush() est indispensable ni s'il faut appeler ob_start(), mais avec ce code là en tout cas ça devrait marcher.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Question simple : Pourquoi?
    Avec de lointain souvenirs, j'avais réussis mon forceDownload avec ce code.
    Quand aux paths, sont-ils bons?

    J'essaie cette solution demain matin, merci encore !
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Pourquoi ?
    Je ne suis pas certain de ce que je vais dire, mais si le fichier était corrompu c'est qu'il y avait certainement quelque chose d'autre dans le buffer, donc le vider avec ob_clean() résout le problème.

    Quant aux paths, sont-ils bons?
    J'ai fait un essai avec un fichier qui se trouvait au même niveau que le fichier .php donc ils sont à adapter en fonction de l'emplacement du fichier à récupérer.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Après modification, mon .docx est toujours aussi vide à 0ko..
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    J'ai fais des tests, et même si je set mon $location à "", il me dl un fichier word vide... Je comprends pas
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Vérifie que la valeur passée dans Content-Length ne soit pas nulle (càd que le chemin vers le fichier soit correct).

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Question novice, mais de quelle manière effectuer ce test?

    Avant, je débugais à base de print() qui s'affichait malgré tout dans mon .docx, mais là, sachant qu'il est vide..
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Stocke le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filesize ( basename ( $name ) )
    dans une variable et affiche son contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var_dump ( $ta_variable );
    exit;

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    J'obtiens ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: filesize(): stat failed for Devis_bis.docx in C:\wamp\www\test\file.php on line <i>9</i></th></tr>
    Une deuxième pour ligne 11..

    (Encore merci pour votre aide !)
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Donc soit le chemin vers le fichier n'est pas bon, soit tu n'as pas les droits nécessaires sur le fichier/répertoire.

    Montre voir ton code stp et précise moi dans quel dossier se trouve ton fichier ?

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Alors pour le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
     
    	 forceDownload("Devis_bis.docx", "./Devis1.docx", 6000000);
    	  function forceDownload($name, $location, $size)
    	  {
    		header('Content-Type: application/octet-stream');
    		header('Content-Length: '. filesize ($name));
    		header('Content-disposition: attachment; filename="'. basename ( $name ) . '"');
    		$debug = filesize (basename ($name));
    		var_dump($debug);
    		exit();
    		header('Pragma: no-cache');
    		header('Content-Transfer-Encoding: binary');
    		header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    		header('Expires: 0');
    		ob_clean();
    		flush();
    		readfile($location);
    		exit();
    	  }
    ?>
    Quand à l'arborescence de mes fichiers :

    Nom : lololol.png
Affichages : 281
Taille : 41,1 Ko

    Le folder file est là parce que j'avais décidé de limiter la saleté de mon histoire, mais du coup j'ai tout rajouté à la racine.

    Pourquoi Devis et Devis1 :
    - J'utilise phpDocx pour éditer Devis.docx avec des informations que l'utilisateur rentre dans un formulaire, le sauvegarder sous Devis1.docx (cette partie marche parfaitement.)
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Donc si je comprends bien tu veux proposer Devis1.docx au téléchargement ?
    Si c'est le cas il faut que tu appelles filesize et basename sur $location et non sur $name.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    
    forceDownload("Devis_bis.docx", "./Devis1.docx", 6000000);
    	  function forceDownload($name, $location, $size)
    	  {
    		header('Content-Type: application/octet-stream');
    		header('Content-Length: '. filesize ( $location ) );
    		header('Content-disposition: attachment; filename="'. basename ( $location ) . '"');
    		header('Pragma: no-cache');
    		header('Content-Transfer-Encoding: binary');
    		header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    		header('Expires: 0');
    		ob_clean();
    		flush();
    		readfile($location);
    		exit();
    	  }
    ?>
    Le fichier en rouge n'existe pas sur ta capture, ce qui expliquerait pourquoi le fichier était vide.

  16. #16
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    La variable $name n'est pas censée être le nom donné au ficher téléchargé?

    Je viens de test, et ça marche !

    Juste, du coup, le fichier téléchargé est nommé "Devis1.docx" (dû au basename ($location) je suppose), la variable $name ne sert plus?

    Mille et un merci !
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Au temps pour moi, effectivement tu peux mettre ce que tu veux comme valeur dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-disposition: attachment; filename="'. $name .'"');
    N'oublie pas de mettre le sujet en résolu si c'est le cas.

  18. #18
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Très bien, on est d'accord en tout point !

    Encore merci !
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fichier docx telechargé corrompu
    Par geof dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/03/2010, 15h04
  2. [VBA] Excel Récuperer Macro sur fichier corrompu
    Par Phenx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2009, 13h13
  3. Comment savoir si fichier corrompu?
    Par stoyak dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 17/03/2006, 22h26
  4. Fichier corrompu
    Par rogger dans le forum Access
    Réponses: 10
    Dernier message: 27/02/2006, 09h19
  5. fichier corrompu ! comment réparer ?
    Par Jean Bonnisme dans le forum Access
    Réponses: 10
    Dernier message: 11/10/2004, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo