第087讲 http协议深度剖析④-http响应详解(文件下载)

下载头必须有的 不然浏览器不认的。

image

Notice 注意代码里边的注释

<?php
    $file_name="b.png";

    //1、打开文件
    if(!file_exists($file_name)){
        echo "文件不存在";
        return;
    }
    $fp=fopen($file_name,"r");

    //获取下载文件的大小
    $file_size=filesize($file_name);
    //echo "文件的大小是".$file_size;//这个也不能有

    //返回的文件
    header("Content-type:application/octet-stream");
    //按照字节返回
    header("Accept-Ranges:bytes");
    //返回这个文件大小
    header("Accept-Length:$file_size");
    //对应客户端弹出的对话框,对应的文件名
    header("Content-Disposition:attachment;filename=".$file_name);

    //向客户端回传数据

    $buffer = 1024;
    $file_count = 0;
    //用于判断数据读取
    while(!feof($fp) && $file_size-$file_count>0){
        $file_count+=$buffer;
        $file_data = fread($fp,$buffer);
        //把部分数据回送给浏览器
        //echo $file_count;//输出文件的时候不能有其他的echo 否则实际下载的写入的图片大小会和实际图片大小有出入
        echo $file_data;

    }
    fclose($fp);
?>

如上 注释掉 几个无用的echo之后 图片打开正常了

上边的注释如果放开,那么错误的图片打开之后显示的就很尴尬了 看打开图片的文件头显示的竟然是文件大小。。。。很显然这就错了 难怪 去比较两张图片大小不一样

文件的大小是109187ʐNG


IHDR    #   `b    IDATxݬ݅ݜƕO$`  ۠﯐՘ۢƅݭť٫q)wwwנRēg{࠹࠙sgᄏ^^䵁��}��r縜)477'Rӄ_.
ٿ
؞_̿݇|=핯��kϾ��Zڼߧ:Ӯ|ڶޛ/SÚԠyh˖֗6Ǫ4jr몫lG׃ʭK5ھ9��ŕɺјϱٲ䷹\ֿ}S׫��U+��l��ɿ��޳޾bZ6ǸkϽؚmuľԏܣ.دӵ޺w3߾،��A
jPĩyZ婷ҢۖŴvӵI˲Fήח+Ԓj����˧&Ǿڶ霪ퟒ���fPΓƂ1-Χں̊`؞iƁpܬұ?MMMiGJŒtΥ̧ٹ)-_WWеSnㄆԱuꓯ릚Ĵ��ܫ0R��΍-ܛ__迮֖ײʀ
ퟷ�2ZZZRm˳c?גy&0d_ބӠѴdëPÚ��π+<Ӑ˟ZB��ԖAׂޮ]Б顔x��5fXշQw̜�y֫јB!ԕ+Yڞfhȯ+Ի[~ӴӘ��ױ䚡ҒVˀfǵ?(Ŵ࠶1&j՗<��Ν'W]uլڤҲĒKȜs̡ǝ��`ȐOe߹ʀsˌ3��ࠏ^CCì֖Z2��QN9敹��߹畁۲+߳kݔ䷆n$]tҴ홫Snיh9~��ξ��Í��Ьԍ&믿޼��فX갰⠋O?͔ͯ6&��۳erܘ֕YŘ~��5��ڂް��մ$*ԇ:\RjllT��XUʼ!UǢ៾ѐ0QՖXh��ePދ^Uї��ȼõǧͬ}c˖玪m2À͓ԁ~(O>��ܯ࠭ȅ2lٷɖlձו֏i\فIR^Ӗ{饗d࠽��ߒeיƱџşߙ*֗(?jՈ9rŪh

ͩIJz��T滄��턟vί1cƨƽ��߸��ޞν��࠾��؊I&L՝wޕN>��mǏCǎ֧࠽ו7^ȁKCa��#ᄋ^e>™1ЩõɁ
 ЉՔ6L߼��ǵҤbmɲ߆Ӡࠝ۴U��Ј}��זDu͓Z��˿��맨֛n܍߼��&��Ō40KO��瑦3۩Ѯ=ŞϿ��ဋ؟~ؖĂΩm2BϡөԆ��:J8ࡥ4/߸ìڧ߲��/7΅:χτ��ˑG)nƧf̖A| ��셊����kѻ��ׂ͐\����ח퀸öӴӋ̮ܭ绸L5؜i]h~��ߛqŕ3��"Ӎ6܈}ޯ��Ōϒ*G,ࠆퟅ�:Iv࠽w7֣Ӊ7hjjכoࠝ녩=ì갃;LΌRÚՠ׉F��իθBםv[y��[JK]юLHꩧ墋/vJΛj5CC\`EƗОe&ܫثcðģλNڨSSĜ��֗ʗ_|t?��/��ܨ>��ڱ{Ͻ����́��CQڌ_AI̹Ф@۾Bo׭ꁒ᯿��啵;0 ŞާH%ﳫԦ࠿��ퟄ�VXaYt҅‰)Tޗ؄��엍6ܬ3e޳М?ʻ}<xf]jƔt&��пn޵Vڷ߻��ퟌ�ŖZ(u؝W࠵֛*]ܿ��x��=ڡRҧ࠽Vik"f66F 3;vն   mw��ߝLѥ��德ࠗ1࠵יTK^aŕ妛nҹ瞻ͩ́
j��9yW
Ԗ\^h.eԅ錋/ݠԿ{Əߙ愓OӳϿ_ꎫϾ‚߾}$ࣳΌ̟O<��ꪮ}ĥ㏿֍6ۈ܁ྷއמzڥ؝ӺL��СCԯ@;ϻh��ڤm͚G%؜¿Ͻ����Ԛ[hֶ֠Mΐ|qcC��؂y1
Ȏ⠪1bIJك嘟ξ:LձꔛԺ݆ȯ̆H80Ѿ}��<{챺lѾˀ��m„ےڮĞƟԖ|��T6I9HSZѾ��5ܟ罐Cɏ?��ݳNEÇ}Եw57ܝۘ��gՎVZi%'Y})\pª³̲ˬڦ۩ࠪPÚ��͔Cy[6޴S5M��/ěʳ·߹[YdaڴӋޢҘڗ��ʶ��עӱY��k࿓࠾ğǟ\͢ϼ��٩䙚QڵС_xᆕⸯ܃U˻퟈�Рyʆ⁢Ǝ+?��zEBkQn`ǖǐ��l؇;Eyٍ7ި/lllЭךJUat˭ؔtr)߰?԰Ԏ;M~r͠7࠹Σݏ꽿إt
)B폽��۫C��O<��h\^É2%LȰ߲Vgݭ#oǮ˓9Vƭڶ:ҐVYeyMʹ
Ƿ࠿ܪǾꫯˤҁ܋.ڨړٔԮ�Кk̮��إ0ܪ빕gjPğ+ؐ΄x��ဿ{%NWѠ<&w8Ԍ3kџRK-ʹʄzܸ0ԙfءͨLɲV͋Z[m֕4碶ܯS��z٪ʫʅ͛g}Х믄zwڥ׫
Ħ.؜rӼ����/㏭����-ů��˃?ա¦մ$ޢ]iQ7ݰޚ}Qܿ��C>шJ^̈́7ϣ!��‹ԗ6ǫwՑG쥵ⱭʬE` ࠸㍕&`ܭםݵיʔш_|��Lj̐ʹ暇M꒚iˉ֕gĭ1ڝ:ЍVӼӏ ԅ붍S顁��^yƼ寻ꥡca<ퟀ�嘟^כo=cLΦj.ć윾��ٰÍռۻwoeˈOy̭��j��՛aǝԑ‘>��=0��䣳؝wˀNщ&ܬˑ��ü����=º҆ۀwƻf{Ͻ��s̫뜥ǀa٣~4F߃HT*&P֙⛤߮ݻ;
��/ԥיV֮bͰ޶¦OgЗ[n��֓Ygݵ͂ͣ����ŷ̒ګλ^
��鰳λשƇiő၃+OӢҁ~AuEѽ#`Kʴfrգ՜��ցۤ��ﳎ:뫿ѻӦϓO?]~����GT��¨ґTŌ
ܔʜ����ˊnÇ˹D��m }۩ƙTkǶ
æݗEГ>L0J! 6ڎ:븆��3Ƙ6bΕ°˙իPÚ��ϥ    ډӹ��҇WZdžFtݷ߻*cɃޠ|0gbuä   āSŖڞ?⸌/#dι谌����ԁ,טbʿPԠ{﵎quї^z1Udh࠸
QO?��\LFϬҔߗ\pA��Ө?Æ
R��_@u41$5BsJ^sΕJؙ0ؙLȈи{E��ӡ̐)ƐZٝ
7ܠ>EԽԤХ«ڔ}҅고ϗԟ"ȺwࡘAwҽw<w2힉2+��՘™۽œڤZޟ蟇IްÍʼئ„��:!Dڂǟܢڮԅߐڐbι眍")т1MPО{�ǩ̄3hĺyҩ۾ט_
j��
ˉͷߢ4ě4Nٮϳٶ s=ڹ晕ҠBƾ 0Cؘ=t˝Yʠ͖ޮż
O dϽ��ߙi_?GӾNĉᦘֺ��6ͩĖ@ܸވ~"뼾��]Sڈ墟6ʆ`A;Duיؘȷ[שZ4'\u��żِZTѸ†<І`Ξɤʠᓸ_{���׉b+&@&Ў!   01H5յ�iݰLՂԽŗ^ʢյNDͤo;0&ǩ̕��䨣rDŽڰo֌ۼ��Ӏݼ��ĄSdL`zT;Ì޵r��•#)��ثѯر@v/��՚Ć
~=ƹФі`ǖ#ć焵=��EؼllA9bŻ퟈�΂ۍH61ב牖͊΂+ġA˨ӏ̊E`%��U_T΁��نЀ㵷ʃQX��׻�̼��[ɲe[?⍜͐҉ٳLjǽ撬ƴ��ΫҵӸ⋫D3X8��Ĝ͐
��?͏G-2Db2TիW隷^��@!}O��_^Ӗѭ#ܒӢX
5Ə߷႔L1ӽ��q*ɦܬš#cg&OЄ혠֟ԓP{>ɂ߂5טCş߉͔��5��½Ǹ_N9唥̀w࠽Wɐ-ƾ=ꅖ[ݑԥ5��VF澻_k܂۴(g[2l/ԥI㜺O}Do>��͑튽"ǣ㍷V-ӫ5ت #4Q.꘱ܡp��.&蟂?3��̐ېxفђJ+:ζbLj۩MůʶKy߳ѭY��&#갂^3=Ǎ��
绶ؐЖ��긟
Sbῒýt2Üsιrh$*eŇ2l!`ϞHH
܏ې¡ި�� 0(dށo#  RѲL
��$娙��v࠯ǟ��ޣ@ǀƦdu猇{L��1̄È杳NޏٹKխبИ-PǾs
+HǞKЦέiõɁϋX����U |ƙຉԁȻꫯԶ`ك@ۭ˔4˘j΄��b Ѥͷ࠼JߠgҶ��鷂>��g׻(��ԗmEߟ4ݸι荾Կۯ��̪ƛ͝69ˁ;ǑrՉۓrLq4Ƨ.Ś՟hK˖%LJuĜqđ)Ĥ$븘1ĝ ή時„̼s?ծPÁʢ֟s͑ʠذ޷ߛĦڴØcŠ໵몑T߬ۜ:xҿ��3��ؤΩvѸLlν��Ԭ1ƊߟљD O)ƊDzԟʧüު23 Ʉ痊̽��(Ȉo��꩚6̴ƄkPğ'@ࠠ2hƘ҈,XL``”ɦċ˛L    sɁݱߨ&4ۜK\C٧+ѣ~܄p}שCkϽ֖l۩ƛŁɰ^LȐ:؝ˈȑ?ɒBc仛1ຘ܌P@P ̖C;EٛPɌtkګ:j)k��Љ6=N!Uٯ٢J��޻۝&.۾ )��Ф˙=©zࠜd³cDާЙ0LΌTtiIܮ܇ܪбϲ�٘ږ
ۃЍ|ŔܲΘʙщuJد꿟r٪࠺��Ԕͷ҉б6܂
jPğ@
8mǍ��, ͢(Φ-&ڟazϽ��eƠ6Ӄ��٘��':bďʁ����˶ƙߑ��,ʒh¿Q鄊Tv+\lqCsŖ1ԛCEnːޘ޷�ӎǁ!&U 믿ߊݖ`̬۶ÐDž������3$ϐ
Iʁ'˶úץ߆�㱣j��Ҷ踀ǘ'"ƭ^؈ؿT԰ƚԴZՠ׋0ʼn'(=FKÜpՒﻈ��b–f~ːŻ뒴1ΆÇícrRߕ��̪`ըі
ϕЃ
��v��͟vĀMͦǴܭhS#l̳!��iZŸɲE%oέMӃgաju��兾֠5Ɂ50Z¿׏{��نAĉBbړࠐaY\ο��bǝvԽѶŁ;u޺��䙃>ׁżįڜ։ʸCYٯѣ Šݒ0U͐G��ڟŠ>1۠��Ǔ퐓a߶����5ٚ��JжӁǡIz-f:��Ѱ`.uڄV7ߡĤqÉܡq[��"I+ۉྎ?k>KkۅL
tؑǚ߷5g��Ex꡵茟W;㰸Hȏ#ʌk
ڟ��́
j0- رùӘKРbԤ֑ć锉9cǬ]7ʵ!NW٧s1#4%'`fxNkи{Ȕ*bYaƽƨ��0ݐ}չƽ?(I%ˌMӯȍ0}'ݎy��֔h߾Ȉ͕{yQג��5�� ($٘¸14š"ʻԂ`IܻʛԤ|=Ӯ辶·zǭoІ��ŸіA͓v뚎A/ſƄ��ˎ�ХҨŎẔ3֜ߞ,ܵNϚա֙ρЗȆ}ᦾqӯӨ֍׶Z��q܏sѓżO܆5Ȇvhڱ÷Aˊ[٤=ȷD۳͟t⬦צf7лwtġٵѭ҆:)E!7f}ࠓ#Rш+
ј2M2_��#{rpg,Xϰ*ЎǾ��Ǧܸ[F
~ΠӦԝ
ԕЊCV#
)w��%9#M
jP͹e͙��cͯԵ۪L${Уm��ٻbk볥̶Ǽ��=îǿm
*>ŠĐ٦X��m\إʄZWѝ��ױ��ŐGƟKܫ0킔{ƂԻLԖrWǎ˂ſT裍
MҜ8YՎ밶ȨqɱÚԇyЧԕZLȚ«a+ۤգ��Յdȶ}S
ѧ2ퟎ�*߲朊'^[ƿܐ(ŏυⷿݚ]Ď טʽz:fXRMP
u��ˢ۬"̯ք|>䴇K^řNؾЧ-yzӧAy:՞����;%��VϑƜ5ͰIuAU��酰ؚՠ׋i跌0)یG͝'ٷ+yϟًɬ|��ٷI࿽ų1썬%ݙזÚ��ŅՇ藝ۍĬ'Ǯ쯟@ąڹƆ5؂0φѹn-޶��şҦYۥ嗗ϐܯ݁vࠣ/),ΠxԆ5Ɂԇ֓n˷κ;o9\%��ĵɁ儅ߢ.Ҧч˜ȗڹyԩҢįr:cʋt޽Ȇ5��ǑåXѨ˥$٦8p׶,kPéÂ֔rAZ
ͺ׆Θ#ܮө|҇W2ѱI٬^ڭ윤י��Xӭ5ѳ5轐FXմ6ƊݨAտ‚ŀڔ_!P[ҵɁԃ[Κ
ɐ&٧]y嶗d��ֶ��2ˬ-ڛĮ��ϚԠ3ӜԔٯ⥓ތ[pLРCߟ.G࠰ʌ6Lڸ㈲aƮț
j��̈́��)&Ύ쳫-)ʆ}˒Ւ׻ƕƜ��w��`ٚԠŽȹ*Uҽʺ,ڸ࠺՗ˊͫ��٠AĨʮ\Q��5آ:R(ɀꘟ۹ڦȴ߸J'ȦĦԖ��*lbСͨZÚt6ɩԐ-ٛť˯ڹ5Ɂ
:κ꫽ߩǝ��A
~͠QÉX܌7(   FMmҐާݢ#G̵R.ԫϣfƩA
&X]łϰӔɓԨБ܏٤��]\ͨĬWӺIǏĕjPğ����_ցpԇ駞͊⮖˙M��ġ棿keke࠻ѲϢTYƂт5��̒Ϣ麯ղղԻ٤rMˊࠗլ⢲ŝ|BSͤΫゝtҖᴨǁߨ߽ƊɘߒͿܵ:ꨕ͕͕͔%1q]%ǟŖ��Nۨ%dց#��Vז��߻f̮بyaeƉlj|䆗 đAƌqH~݆ĸӧƗ˖˖ʶW6߹ߎһ��ܼź
BhҏꨑؚښٟKڸ0��I҂ y
쪰ئփE$s2ܱͰޕࠟhĬ%}[ȊNNݿ׶��c69m譶Nܺ��ؚޱ��DGvŋ��?ײ5��Ŀw²ȫҊqأrFDŽ���bzހ߲ߠZڤ2˚݅i\vJېYԡԧmZסԦxڍ×Z����6��Ɗ=׀^س=ԡƿ5��ᚿΎ��VٲW塤j`೶}ڕ-vRک}նtnƇғז]*ٚĴؽ��ʋ*��ΖǩȬ/࠾ۙՃ¾DΨ‹.ѹ朏ν��ܱՑG˷࠼#Ć͖Ï?\+x����ࠗ\qż��|[eϽ��ֺϺ뫩ZvJېYԡԧmZסԦسǡ֗^ֿ��ƚ嫯ޒԎ:K?_|��7N=������[
��Q繌1G̨ѣ<ϣX牧ࠌ݂LӋ/ݴں꫓ˮڨڹ曓6ܟrȡʻᅲ|��࠽��ܘ<��qȽ#.ڤҶ̎ذƒeΞ#ϼrږݒ6tV{.m魹ܖm謹٧࠽ӱ䇧Ͻ��1ǤG}t♠��찣λΕ}?6lؖΡറo5��ߛoܱڡƛӋ.۬QF��9��7߸䅱S��Ǥ؞zkd࠽����O>I��}ᾷޫ׭Ҭ莖ֺiӴ,;%m譶��ڳ6Λљsݙ䱩Ǿ욧ܑݲ˭IڜNښ۴ؓ+e����[
9��!کǝ��Ґ)pʵ۫ϓM��ߜqǝɏ?��os��؟vݶ_]m֝}��ת}��i٩iCgַ蒆Ξة݆Κ䎚ǽ��߷߹˼X{|��ȫٻSƿԙݕ��ϼ��࠻]`ė_~yrԍ7醻￿9��G}49챃ՁÆ^|��M��c�� IDAT߰*踚aCǦϼ��QG;Zתޭ؝ǩ٩iCgַ蒆Ξة݆Κ䎘ǣθBݑ,PL8GuT2v홽`=��EQğ꬞j��࠘\؇ГFȊxՑG&˯߼DΜsϽނ��˓ʩ۪pс%Ͼ��ޓߧUYٶgԝۛkC緡z(ܑqa޶۫ʣϽ֬Ԏ:ɺ뮓<��ۘܛkĴƧԃ8Lc6%mL
c=zվ3Ⱦ��؟ޞdN2DϏ;&5jվƱ㵄׸|��(N��ښَեxu��iچdž]o࠿��˘ո=ԷVז��̘1ϡƌѐӒݜu؝��˞{ݰ¸ΐךk-ދDة�؛:#߶ݛލRBQߣeÎ����סjʆ6Բ��oޟߖcׯऔ��ޜ"ݏߝ휗����ۈ��JݲǝʧOijƫ6Y?��ǔؿWk��&ŏ6��ؤÏ>ѳxeȐϔ   ^y啲ˬԈlВ۰Cn6kѿ]ϼ繁߫Ȧډ˗/ӲeP<aڜ6قպǥߺZ6F��͐vfǶ͂��ܳ샋߲vࠚsԪ࠾͟ծcfˀ��Ӻ伓v͂��[ӹlО{ր6چz߷غ*ݲǶ/"I˶Lmތہ΍��؞ͷޞ䏿mӞó٬-캘׭��}��ˍ ݜVe��°arכԜ䯿����/LGԧߺRN<��۫淿��֭ިXR͡۵IֵĢЙ #ʗ˦߉ӣ�!~nj��~qi(ࠈ²��ґӕȲ֓ZoD=fıծKYʼת;“7hǹ碋̷/Kt'5׭ЃѪ㬡ؕǬf
����ǜۚéڣۗ/݄ÂK:o<?ߏ&ퟓ�ƥ���aj正e
b:ԕ&
ڒаªʱpZԡ傴֌ߦ׫dR��ߊ:Ǔjô3,3/ǫ҆̆Ԛ}ɟ7
}(TʶOۧߢ'NԣκJלrK⧟}&������Ϥߎ/��ۺߖ٠׏јQѻRoPm}=FL;۞#RߜǷV��M^Y��J[ەLXȭ:^60<cՙ"nܘMg ץԏ��ӶʉڝlƋր̄ȸ者ǂӺΈŋUr)ܺچ��֛ݶ!ɃỈ"ռĕ쩨fįɰ4ʰ֯3cù֙a��[^hݺq驙دҥ!/ؘ��9m��ֳ툦ڶ멛N��Q:ܞݝ)ϯDގk[h‰LͻߞTԚ┬cϐ՜·Ŭ۪˾<óϿOS:����̡ǝ&]ܶʚtØڊѫ#Lٶ0A˭Ū3Ě׆ٙ`ܻbډȀİӡ����bs��׍lL��#Ɖɘ飂۞ǘލKLD��:��$igB6��n��褅 ƴǥ\^忦LZv��Bvܓ$k&΍ڡӽٶ��B!ᨌѽҘᐂRiꛥƄ@ᣏgҾӟZұ��ǧsݍȹ߁^رž���I%Wh5cҕJƆȯ޾^טcM9�Dĥ&NlP5��Ҡى'Ɍ3Ϝ.��鄎544ȆZθU��ԉ5   wӯﶢPͼ۹є4ے*9Rٟ06ȴњ˳Ƃbbjݫƾܱ
c��tȭϬ"ػ±ڠc85ֱࠑ��¯&��ҟȘ`1ࠤGؐ⻌jЋ��ɡ폵����6ׁ(͞إɽnSֶ��3Ι–
ǻVυZcX)ҩۣɁзؒLŀܲ$pԶeƾeý��
fź��ɩɇ˰Ч࠼Ӭ۫Κ��OTǘ]]، 耮әеk؊pϔ��ن>cyÛŗʆEYLčMΕ͍࠙œl랼Ѡ࠵��ļھի"ࣛӏ޿mݫ��KDŽΎIBFؗǒޤ횘<n<fͼ֣ŌץqNѰʊǁ��X3үfRxԶϏ齇Ϸ5ֶ'ѠZގ͟ȭ>Adⵛr&h"ܷߛbE03ƺΏ_[kqR쁣SӪc6Ш|ܦVNqЭֵfՓӣ��ιM֭ƛߋۈȹŪǨϓ̶ޛǗ!뢨^3L2뵔ˋ͒1ӏ��?1_ۜڛߋd��t鑹࠿��s��s̡ܭ֙f�쥗\ҕ��t6+��4z��ƙR"iӨ놷��O?��g߈ڌӿ۶k?&Lѽ����GϞΞӶ/ŞԞɔaܱɳ[؟Ԉ$٩漯ࠗԣL3ͤˠ,��̴ûb&Ȋ?��֨͜~
㻭~힏=��ŕVԑ#Gʍ7ޤܬ҉8{e.<ΰ֯޴Ҍ2Dםv[��Ľm
yl.䮇A¶srêˬ"Æ
ӛn٥3ƴuיfӥ؞J査ޔY��gɔАt޵؉ʫΨ-Ԑ^ϏP��䚧ޑ�ԛ٦bȒrз֧$3Ϲ̸ޱ����垿��$ڲЈY��gŝIϾٸ&UqG$،࠻ྩ࠿&꘯LjˋƒͿɑĒݝg��fwشieޒ靡���ca3ۗ (UÏǞzH߼��%טBǬ޾Զ)^S߾캫F؟&?��^Ϟ=dɥ֖X@Ɛgp%ƵV{OݞǷ߸S_|1e>y솾�l̫Ή��Ҿ��~ڡĻ��I꣣Ͻ籭.Yt҅Զ竰zXS?����]}(]۴э7޸țөcG��Û믻� 7ܝw߭࠙xh��܍oޯ뾾磴2����RސRʿ}㰰´ܯؼ܋ڙr؝vI߾��LJ�̽��Sť����܀��o{Ӽ젿ӌVІmҫϱhreۍࠀ   'ܠ'Pdžپ۞d愸裏ԓN;Uܯcemֺx׆կx߂?ҴᴍеƮY9ܼMYҳ̽��ԫᄋߒՇz0ͫn/☜pA��˚ݪбǟϙX˝s˨<xОł^?ޓǫ��fҫWФ��ŧ̗8гgO-臺Qǵߞ|[lN˩��:Εÿ[ҿ��!ubGDZG͠ZȿЧՕ��9ëפܯ߱������׹ &՞2홎��ٻԪ4Ïuvޛ��ߘ8��>ڦk餿��{�ƝΩէmκ̵֨GLC����Di+Ɉ?ūӣٍIF+����Ьטbۮߣ����σ؎��Џɦ؞uי֖Ҍ㕓OM��(
ĎnjХ9Զ6Ɵx≚Ґ������mʹEȗ׍ݛoܡ'ܨ[͒W]uՓ䇪DЩtᄋט[I ��fzꙝ    c刱N
۝לsMҍϞ��Ĥ뵿ڵʬ��Rཪ⣑e��ދ`˫NR)֋4մJ܇��ݩp3˖[l—Ѯܢʊʟ$$˻��ΝܷػhƯ߸Ì>��ۘ֟)ֈIp۫ϧ߅_߷ljr؝wʩǜ˵��ΝDŽرۼ淿QʹDȉ>LǺ��ηpÍ7h[؝wޖӶ[Ѝ܅_,cƌ׾��9呱Bќw޹¿:ՑN-hѿ��裏ֵטâ׸ʹ~7v֮˯߈ҍ��Ԛߖ3θC57ޛZ?ӷݙ列vm>-ȻSI֌¾сñڇĪ۸ٟԤ{l��݈ڊbߊ Sֵ��ȾŪ࠽mw݃\ 5I-֔Rٹҍɡ_Y]V͢��jՈ��ﬨΣmYׁ��#䇏׺;޷ߙֺÖҔ׷ӽ&۱࠷-؏ͯIŅ����ﱙ؋QWק臿E��ɚkֲͥy瞗ސ��.o6͵װŤf֚nܭd࠽��̘��w/࠼
ڽ����Ƶۦ㘛ɆǏޜ읿|��OR­ᒠӛE��4&2\
I$րĴ‹غu½ꐿR̉o��yz¯ѣGi  cϚ��λפǠ߶²䇏֋.܌ă칷˯ޢĤ4Bݱ睳(Š8ࠀBȼ¤D}ۯF᫭ʝ��'y)csR׆ԚSˇǦ̈͌3Ψ��e&ؼ֌αȿ֋䶴LէхKt۱vYӤͤ‹.Չ0Ձ̅Ud��I͚ޅFࠡHO>��݆ʈL��^,9@î]ۥ�CɁ܂щMZ-L՗\rɚ����߾������knjęԠaǝꐲϾض��Ohύّ֥כ.ӎ��˶ɷ^˻1Ǹɰړ8A脽֬Ӌժ{͵֖w࠽G:Ɓ
٠��!̙σ0yƴ��7^ 'čg0Rǻٌ氖^l��p֑ȖL붖͍
JXܵ뮿��Ž̥3ce��঵B봨}�ڜna΋ñر㪸1Fύ3VΥNsNMq׮WXaƌx��ΘdԊ��̊d>pĬ��?NﱎfB4ܳfKɽ (П��ܠȿƞUƹYɱۮ7޴SeǦ'4ࠥc乭kκ
ࠨ녹e퀅hʉ>1��޻wη࠾{ŏ����f[

�ӪՕႱ0\d|f١Ѭ+̵uA��U1IZОcGYߍݻݷ8Ǹ��:곜Tu��݆+dÍ6Jq7ѣlԮý޷߭uӾ긷ڗ��&雑鸞uԑ#Xp鶽͗‡侃;֙©ӗ,֏$:)N%՛oߙ̌〞zࠑb3��Bv?PܬӍ��MяЩՆѣοɞä����?W6Ұu��^LV[oοĐ1މ㑗˜?ב ܚо5��$#F͐Ƅ׃f΃F齐G{࠷rdАw.ڽՑKmq!5|��RȫϿ.Ͻ��⋯ޢࠄx<̝LÂ\ؘń;��&=3_6ϾkFڲiQͮD٢~הxˏ֥҅
1٥י֢اJt҈#}cΎ׳̸ŢǑ[��ɟy蝔ٲö<��ߺˊ1hg뭷ޓFΗѪ!��Iu衇Ɇڵכq܎΅_"K.ٔj심ҨϭkӍ`ࠡמ8��b"ȑ͉0ƶ3 `vHϜ~ܚ'Ʌ݃Ȃ賖��o2Bךӊܷ雚z饝~բ6ݰ#՘騷࠽ǙЖYfYŘĸ߼_ަבFꇩ/߸BƕYgޕ֎ʼEʙ·ַM=ퟍ�λҦ`:` ]#̉셟z.ʀҀ<��)ۮ ��CՂƜκ뫮mƴZ��ϝ����:E{aǘP<��맊śoߥ۸Îۆnɻ©#Ѷ۫ٲ*o��֋/ޠܭ֛��޹曕|��ƦƗѧ����&ْ綾_qxqٞȗַ̿اĽΓ��ロJƙƬž۷׿��݄¾XƫNܘ��łZȃ��y瞲יgiƙ۫F��
C=Eģ0юg޵֎kż{䒇څ��h됗A؇W[m֊;։Κ`u庤ԏ4;҃30`֨㟐xܗsR8ژğ߁jxЀij1 5��V½ ��̂Οaǝ*A!ԉcϽˎcL?+ʹӊˆܐ8-Ii��EnRۉԆɡP܏Ƈb؉ȹڰ.ñε֚έȈ;Ց
 &Hh̟ˠb͢bᱏWk:,2Hd[=bcڐeBӯȘ
_ùØ1��芦6#E[8Ⱉ˿ƙ׽ԹG[üܬšoød˅!80oMM
ʯ˭ת&աޠʰBـ��?��ؿ~Zţᄋqط^   "s՗^{̉'ΑFa䄝Oʌ<83~6ǡь㎑ʘU��%Ϙ ݬ/F̛g嬨ș[mՕց0ԒGp
)BɉݲvӁ퍱  {ܙثϿߪļӉ'ɣϼã#žᏹ衇eι痧Кa—^zʶ⣌3Д{̵碑GRA类࠿މſh=ݻι蔳BDae҅˼��YpE��ۈ߅)-ܾ%ͳМ˝nWǢ˛sĠ3F3Hݧ࠽VǛڋ0̀Y0_^˜#|Њa0悶ߵכjʄ梑>��ҵtLjaR7﹣eÐԕW_]٢ACШ莸   Ư<N>φ!ܬӋֹŭÜ^Bw;ˮۈۮ¹5Q����/AﲫTމIBzƶѫ}&��࠴3Р��Œʈ̔yάƛ  rԍ~뤩m3~[
ÀPüܮ��ۛL
˗FƠȻ^��f̈́G递;��ÌᶗࠐӋ̠!ƃƠ\,Խ����ɩŠॲނ��7qໍٗ6lȚLbBݣϽ3瘚a߸䟺&}ʫଊݠFDѡĀ`0]wݑʢϞ޴o?qŌGJEsĘAnݱ7'ϪAD&şSO=UaܣզğHܶ8!Ԭ$͍ݙu!Р?D)쇊[$РѽȚ4Rҵ7ڔ)C4SFL����ࠇ-��S^ַwݱֶVO_בMҰҾYӺl��
KOšy喕ظ۹c��鶞����ْ��֭wَɎsú��Ո;O9楅=42؎٣aXᲬǣc{ՌKc]ว~ɏݷ߹ѻͶ[컀@ơ\~��࠸㱥͠좋/edᅗV
ɵnڲwݾ-kmʧżކn׌��_߸䵝Sݙ%Ѧ>��ȍXShѰN룽@ߠ����D]rɥZ޹:��оX۰I��yĶˈ֖Nη0̷ߺӲ޿̼gxSΈېĂt��WmZƺCS�¹C��Ɵ@ą}€Bࠩͱꫯױō̙t]׌4ۃ܃́ł��ٜ{ﺊĠ޿��ܠ$ݴԍ˔›東>䑃ٖľӂP٫����ʵaٻDqAkÙǟͭ��IԪ��ѭ1ؤ½ʈ1Ԁՙݴ̍��ʡ_ ߗ^xr܅#ͯϧ:۵uҔнvࠝޤÙl\gکʹX֢1㢁ٿӀmɷiƋ팦ҡ `����"ˡ`IJޏYǻʔW\qŶI邋.ѱc��},ӈ"jKŀ#8HCX��ǁ>Hژj0㑢ϔ5��"e෥޾��aѾ��A��˛ÑJ,Ұ٣ДƏ"کƠ !‹afѠq��:ӱ��ퟁ�wٞY8֍ߴۈ㪋|}aSl[ڙg��b죭`Wz
톍ܰ
݄0¿,��㓨Ġ؎0C+Ĝ࠷࠽��‚ِ��fۧz߹珉$dž8eͯ˹߈–fΗ^zک+{)ԶЬ��Uiވ8,0$vٱ7HߟfL耱A MƠbO nLȬ}LϨRX0ӂkґj̴o֙|ϑWbʇeɥذ۵ߊn];瑢nfX0۰lހó͕1 pAස鷪֓ёԽ1Ԍ��כ_ްӊſ׬@g��̝Ա����׶!؋'$��؄Ý2唕R ދх��ԧϣ'g΁Հǟ~ˑɍG̍Bhìq4Jݑ$وQH塎ͥϣ݀Ä ׃(`\Ƞ+mgݏ8㠊W;$ЩhׅUPJ
x^͑Յ=xʷ޺-аҟ��Êݢ-/ݰŠ6ԕ߯S6&Вď߫��@~:vg4%ɳȕ$]ŃLy@܁Åݶ(/̪2΍*3p0
ȂRV/Gݱ��!Í٣ޚxsӌ��LJgh;&~хg͜lߠ,̐6#u��ɛSӌ��dϼ��术ϗЋϳϚJр>�߸ӖԙfۧQņP0Հ0P ��邇Q    ³XҜѾ(kDsҮڿ_凟ýŽ����ѰX`H��NN:ꄕ��!ʠمL3ᆍ��q}ڹ��±܄
AJ¶LDщؿKڏ8 ɯŠ��[nY7~quܴü#ᠤ6޴ퟛ�ퟭ�䩈ۻϽw;bqfŠˮ-p��VÆȜy)_RIEԅ拉˪!teჁo ��EÕ1匿C¶
ࠁ/k]׿xŶРlkȫٯɿSxI`Ż[o˶GܽǷ[7ᔕ��ƀj��&,i0CҘꐑ  ;̆ۯ߸\|��a~��RȂ·��瞤ܭחу٣烥֧ɲe����ڕͺ1΂xь
k֢֯ש'8c2`#ŸڅÐ&痺ęƠ��άҸΕϿ5��wpD'[ՊF[>��2(ǞϘ㡑≇ي��ƴ{R࠿?ܱΧS!$ćڧɴ
^ 36'םh    IDATƋχ&Մ‡4x旾|ڽգ푍.Җnͪ`໼��ձ
ӝʢ̏;u��9΁Jȃڅ݉wɟH#qݢ^™ҡw݉5(ċ��Ą՜BL0
6��ԉtካΤ$B��i&����糁uHp2ƙտ��ńIڶˠֺDs̱걝žØ��L…AYٹႳFQΉ2{͐0
ѮRɚq´Ø��J��Tۄ��.ې٘׌
��١Qdy湊t,��TFίʅDݰ4ڂM��V������A#ٟOP��ÿ˯߄ᩳܬӦD٠ațȲfOIࠧe仐rA٘Ñ��śL;ɷǴвۢ㈳ԭA��̄1#ǨSlwY}��̼yfդxImݭѳ������ٞެ–ҔQמkh`kúYK|DZ*(1гܲNĿpӤk؄Ƭ6ϣ��¦ǾNޞ|ŖᦠBsBÚ騌BV՜`׃KdЄ1Bg㩯L}ݷʠPýǴƢl��Qk37��ځӂS��Ǐ蠥ᰈ_uȾƭ̳�G=&<��vӇ��x܁7-=fl㰆ʢX̍¿Ƥ�ַϜV͖wܭ؋KϾ��Kڹ࠾��B-Â݂-VغՅɀƒ WȠqҐᴨhږfm/訏%HNA+dРΘͰg2݆ԅ߀ ƌݟ&��B̘!p٭РW_}5ՊтörدʒԎݦĩȰ��콷Ԧң9̧נퟢ�ͫϼғӖW��Ե|̨T��igm?̦PPÅޤؘR6me"9��HdL6ܘLùƞzD`y֭h㴃„ԃ̀ÄĂ��ƿ+��ax1Ocß4hіFùˢ-딓֠Ʌ3Ǥ٣Ӹ4ʧ;fʴ:Ң1oŴ?CA÷溒Fܭݶ갹v滥ZְИY[̩��{Jȗi-��փ��–ܑ0ƚoۉ%hզۅ補AxZ��s-SM ��!!ـᛞ,2f~ޒ0-܌ܴS&-[O mª»„ǰRԉ݄ࠐ_;kȺ��z_oȚ0ُٔטw݆_]ȫϣ>ԟ­晻dˇeʽK۰TنL!ʹeMŵڦŻplί~܌ԢZ帷Ĺ)ũ��4��͖ᮯ޽ʎ{ٜ��L��ӈϐɯ^]w��˛nڕإ,łYR    ٣̇GĥL@ƞԨ͉MƂ̪˩˯ߜr⼰����dB+aA4>Շ-ǰrŢp��̵ʐǷ֕WˮܾE��™ΐ۠.��U��vĄ��0Օąc!1vQ͕ؽ`Phq̗3el0#aӄtb煸"͕q1\CԦ禋EďvЅfcÅوП aºȋ-ԫ،<��66ܛƈCD��š<aր¢RL ѭ
ĦӔLJɏѭ1糋ީ��ͼ`^̴s��сՄш؝vڌ9pↂǑxƎ��&
ABPƼf渓��3ڂ֥ÅD!䣛 Ƌa닯ߐˉɸ!0⧃X"HĄcfҍ��kצpԾ"ءҙڻIEĖ˛F��*c肵M­#FX㣒',BַΘV̳mѭכ3ҐW��4\c͕H!��γ>̉\‘ւ˜a͠`Ԓ������Ұē��) .䍷ࠎܬx͠B Q[䎇ڋΡ�A Ӵ.3hԮ<£٩aZ|~L؍݉޻ĉ.ϼ��'>ͦ PҐ؜K̼o҅䂁FḚ̀d!ɏل|˚á@ďDd&̕ӈ-ĨދKVƔe"DrウϪږߞm߽ʎ-��<xТ=пm 

謿��<Ɉ��t10a@A'炰Ώم뤐}Dq{ x' ~:˘˟f3ۉչԍͧx‘ߏ聈bҡ۳nj!Jԏ͛?ohݴǗ(HFԥ>̔��Ä����"0Rˠ嫼8
c0ɚL"��Â#ئӠϴE ”JD"렟࠭˶ۉW֐юٯӝ넳8s̹ۈAk3&ғO��̍`Ąb͜܃Y#aR؊֣œ|و↜ۆΑυ K.Ø^c㔒DŽbB熚߉B߂ micՠ⎓屲37Ԯ4C֍߸m9}=
`퐙��ʐcAY��ǘ:jA��ƫ˺ϥ݅ho(.X԰$sФФ#ީÒ݃楹ρ9ׄ1Lj˜ԄШԵ��Ȑe/쇟}(׵ƺQힹѱžCð㙵;r匠Fʐ'ͣO��H����ѓN;]��R ґ̈∃
˵I#QӁ޾ՇᕓOэ6ذ֋b窙$٨̐H҄'0ձؐ4̬C;z{o睭ڍIe?ìZ$Ӭ㬟L8ͨɥ״ܗɿ҇;ŧɹdɥWMˈL|90\4-��psœ/ D    ��Ᵽ࠶Џ0w    %É0%&伋��ضuž͢DŽǴ҂ЗN|dI
ASǙ5i䨦8ȉf0߇d!괍͗����ٹ:$5;��Zp&gҷ6ُ ��g?ӦդįŒ۟iɕ
ߨꑯΝ柍R"kڶ࠘ި׭8x敼ÿﱬѵ1@pB퟉�°��CٲRH}6ԏkݠ;cC@šǞۮࠃc|≧UؤOh˴ኟеŖ(ֳ֓B��L`܈ք׷޶}
G@G̀Ȇط֙$[gAĥǢݏ8@��}Ҭ4ҠϻײLJpͫÏߗ؅ƛnѣ\ӆݹ>ˁܹࠎ:ʮ-bޣ֥*��Ѕb ݢ ��@��oɬ嚨߬Դwͧ{ՔAܘ̯„!ðќP6X;֥  랻(©h7ɝ̴@ƪ��Rt ��͹Ѐٍ6ܔРe^`ζqМŠt,z\_fڥ��5{]0yଦC#ӥ 
޺4?ۻGدD٫ҿTx{‹ˋda߁��ݕɒц��3��bׄ۾@Ӯ��`PȢ¹Rէ䔏Չ9郓ߗǔƴԿ��ݻQ��ׁ`ۂ޿    Ž0Cݘ6±޹ћhL,&Ċƌš䢼ɢČlј84C>ڬ��ՠɘ̊`^ah+ɸGʤJՙٴ܌"<A޷࠼C͘ &B��ӍĴǼǿ��$AY
Ԋ⭕>ޖuń큸V��ý(h}쭗I��)ɟ)fYgڥ׎ͫŀ��Ղ#<Sʷ��ӦڄlDğŕӂ`r;蠃ݸ��4-̆DŽ9ùFpĔ#D e��䬡��7c��J?Dp��ɜΰG™aԴ7ɅF ţE“ԁvDž  ӖTˮϳ1gࠬ؛֍Ǫ޻NJ9;ڈҁǯMЌ�ݳuہtud��Ɯנy晤}Ć֌ذv؞��hӯ_baϮ웠��}U@Ȅ'̭֍⓷UƴpڴցҐѲ6V֏zïUڌ࠳۫϶ͮ{1׊B4hҲ+͠㣸=瞷ࠓՀڳ֕Vă쒇��Ȁ{Xࠨ/ؠdX)`ɔͩ��Ƴӎ}ՠfeĬ4B˂e>PJi,#��P0Ԑ"4ĝ˿Ҽ͓ԧ]̋Ѫ0)͈NVr2˻$JCԌꖙݲڷ<Cݕݥ��'}'Ҵ䊋Rn��2qܸŋݦƧ
ىҬ��Ĉڵ݌��Nȕ%ׁީXɦܬҸ‰ݔݜ~���=��u��ΰ˴խߎЈOpL$9��穷��¦ϡWǏߢѿEď+ϼ쾯$N����eʛXɰaÒԏ>+qZۦk׌��S��  0ޯȕވAf��8ڀ2γ2“fԡÇƭЏݴࠜ|��'⩉SO=լךjꙛɔ܄©��툫}̰:G˛㱺ղț��¿��ԃۑUߝ?ƺ舾⤇͎㷡 mqÕղ̇������ݗ憏Ӳgٷ;œY치鬵3όYܞ��t
ǧdܟXʺߘΣ͇Ήֺm߆ϟȳߓv��DԾ)7WΏrv:H��Ƶϥۣץ��gʳ��/e㻩Ýzi
ևϟô<ell��mgl]ƪϋܷqnظ䅿
lNҧܸ~��؝8᧌Ó«��ђڗ@߽Ϙݶv1Π׏ꉏԱ։u��IǓ̍s࠸ㅸƱퟙ�ѯ顃?̧ل'��߾��h,��Ɏgܺ޺eH鶞GȶŶ$Kč$By  ܘӆٰE‰4CύiVvĈտǤʄ ؇ćקf9߁b¤ɟ.>ܗѝđLḦ
htlׇ��ދi%Ҥҷm��ʪ壂#}܉Iɉv⼳)ŠՠìɄ)Ӷӗҷ޻=輣^K��;;͚��]!/ꘆҐפӆӠ��~_ֽ<غ]N3ѓ⌽KّɎDz۞šȩ<b팤ڙםט7֕҅XFͼ̇?ߗܮۑךˀҬ֌ɽ1Æࠬнי��ןZȃ=����&ŬqЕ=oՋӷ+оq?CɂǢeIG:ۖț:Ƶ ؏΋࠯ᅗQ{?fCҢˬݮeےA00Ӧ㸊о��~[ʝ ֹȦƐɡuxߌ£��Խ[mdǜإ۔����\нƍ����O��ȴČ̖ʏ$ʟϷ7ǻfϞw꣨C&��차صd#؊?箸ة?gm_��I˂ֱ
}۶�>&͎fbټ0BLфҙĴ΍ݮԠŦnc$޶v^4tGhƽ6<ƶc��1׬ѯ܏ه}ϣ%D,˥Ȭkڐ:ڍʘ/  ԑґ?טl־s@yʘa��Zq݁Ҥ}��2DVžج��2쇛Să5>¨����ԪчҪ/W��քcc͐��H(cʅ踑욭ᬵB筆 
ɈΩZЏޚ����ҧퟔ�ưȽۉꇜޘ™,b֒>X_'稱΂   $7fM��ũŌ삣d;Q훞߆цӟŧQƈאՠ™٢AܓPz��ģւ֑åqżL뫇!X‹ʋֈBñԴJƈͼ䰽��aʓ
`ل0L#̳ӼCҼƶ`��c2ƔKؓƳv��Vc(6eg5Sc^ҩȦͶՌٽ‘KƑϛۊ֌#%-ӊשIJ鸘蘤m`̯FND��ږN߿=��}Y6_6&Ӛh؉sg&ڈ~ٰ8п7ۚIO0
!鲉izÚLߐeY$��czbtяM؆ɔ
}��Ζ3ΝjޮzhqȺ˲"߮&Z΢dzѬ%DLaƿAȭQȓKl
wԞ؏蟏'O۩̕SShL4bW^Վֿ+ݰ
cԺ:
F䌹ڶNUާִθkG!ͮ
LϚϱ˚˵7+ վЁ|?/Մi͘٫|ȸdnCV��ߞ��ùð46Y
/$_֐Ѩ��ؠj!1��׸o‰Gߪ��ʦƜ欌��p%ЪÛǬO��ص톶"ٿܠ��!ʗ>c͍]չ
߱цRz߸ٌޤFIJ؉Ϛ泺kϑ҆qL
ߙXJ֪۔æɠݙ=I̤6m'h՘ϵ۲ݙƕgl!��kk̹ŵ扊յ!c͙“؝��˗N"w'ַUxY+≊Ǟ߆̜瘡Vc:q9̼pұdصq,mѱHGࠈܘڛm䱞gbۺݟ۵ 䫍ۦ˽ϵۨ����⦖ܾu&Řc7sӏ[ֺ��OѠ¡Lس܌’߇x͢۲ӱL,»
iܢɱ·'IĹΎ[ö߱<ŵֶ5g̈́��yې̊$jb©"ܢÅ|��ǫЅJ ��Tή^ʜԑj)VřŶCۿJ}»ޠc]ɽ[lԖ些{cƭÆ"ͼ̩ˮق'��եV,>\';}…b ߑHڙ޳WK]܆䞨ΫֶH”ɩ(
΍Մ塽��(h��bݢ��ݬ˫؜
ㄛ*A.ڧȩ  T@܀>ڮz'Վ��*7ܵʻ��>yHҰʷ̙ݶ^ܙЦǂͅӓZё˙̎Д'Ȁ0WG&Ⱦ =HǾ
"좰ǦܽDۙbβ٠ކǓ$��ˡȕoӴ{Իĩү0б��u��2ޛbͥ劤Lh̄iL-��߶ՍO�΀��!ǫࠗҡ귖~��NϚ艁L��-Z3����٩\쿛{öܕᤍޘM<ԣϣ␬5ٔݴbࠌȆ࠺��յ�� ӭc̹Ɩ눅ޅٗùݕLM͙`歙!†;ٌMÔ��ɍ[Y!eڳBߊ峒釽ĜIEÀ̕��neFI!��Ӵ]žۗ*��>Բɓâ RɊDٗ+/��[$z̧xڷj܊QkٖͨG��+TʖӜǘ��㻉L(һւE)Ƿ��Ϙ
Qmde)UꯕJߘfͧԘРŹA̚YǑڙΖijfF֥UZ\㥮��n
zퟋ�̵ُѡۍ̬ħ͘܂̩mٮEٴ8[`��̊ʆ3ݱ0:яaa&Ŷ&ҡلyЦέƝe%Ἁ5ɊŖ֒Bⵍh��ԫܾɛѧޭƣ&3χ    ſLx>€ɣΎFʢQ-͗O唤��ɕ?a,��ӿԣ`펚C^ӎ��r¹%ԝTϊ0NΫbࠫ޽S
AӋֺ3.Ŗɶ|ǡڠEhRň��Ģѐ࠲*��m
)ó!ɿ+XwbAյٯ$԰NЭ썼&Ԛ|nճۍⴳAا७γZ`޴ͫ׮%~u܊ŮΘ׻ϛ��Rsꅍz׆ڐޅQ㺂͊>ѵj걓帰Ժ)Øˤu۠٧jيɉ귮`ڸח8ԛ;GWʕĵ˳DĚ7vΡЮ粗ih):ͨNړϮ۫;eۧز-Ӡې�ޅr%1z:ͼ(z}Рǥخ`?-iɖXt}jI٤߫ܻEۘŲͰYjk̰Ѣ癗a啔Iٍ��Ufa8~͞kҐ
Ǚ׫��(I㟙hQΘꏮďk᭭ѵO2E̔x��_��̽zġ잽[ˇĩǎ؉MӶFㄟӧ`܉0^ف۬ɨI5˚ɦjˉٱ¼媸Θm0OU#ȱĞ̄پU+ۥퟔ�˩٨Șڦ!&ұ)ګǵi;�� þG;��Ϧ_˚֕̓za!6̅٨ʘ燡��Uʞ9ӭL
9cܱ3r0⇋7ɿ|˙Ǭ&ݬ%š۫3ʼnĘ*
آÜ}j02XбɺC7箹G˭��ׇŖkOݯ3גM@iݏ_?Y?|Nˬ��榵ݚۍ
Łг2ykʹZ#˃P'ߤCË#ߗ��ۏܧϞڿ<⿣࠼\Mlʙ*5ſӂƬYHspz˳ϸJ^]+��F6MՂ_JҰ^ڑڨ����<ޜҤ*džJʨEˉ*˕`f[ퟒ�צןࠠߠpŌnVǖaغۭܜ��ѵS��ڒܷķ=Ӛɘ3ꪚ?حɃΕ.3��Y^6:��ҽ֚ÈۯϚM*x-״Ӱ)̙⩯��f*Ξ׊WLݓ෦tՃϺ©dșr˭4Ӛֈ��ژǑ´:ÌޛИӽ׍ޥOQnҳ��$ˠҳ㏢ ʎTE)Õحä}c1aɷǚULlᚦW͠Sք͖~(㎎kŞӑ3Ǭퟒ�K��ҍ˿댐cRƹԂɺ��Ź )AOŨs��ɧ%Q[퍵Rʹܒ& ��F��Ɛt]ŋŸmڦ3`óļδd|ޡ��6
̺߽��Ӛl͢>SXVȬ��ݷ޻ۗɺ
ցl��fûı9ǏDŽC麈ƅ҉~K;ҊO<޳ܯ߃櫴ך{鈉(ڊhΧ.᭹Ԟ6޺��cuΚ*԰c࠰㏲~пӺ��sέ̽9D瀳z鿬s֮ZŢгߦÃ7职ʲޢ۞̘:Ͳα.xӎDZީ$2_nj҅M֍zE	��ӏnR~텙GݮΆw_ַnچʍ-ʉՕۖ8͏ʹْ$EȀ늭zĔJTNVҒ��̗CչяR2ޱMخ҆ང돽PfXyu1{£~ˊ무Jߏҝӂ唉ߍ˖io��㌉ǫ͍쓆ZJߛo+)8#v^ܾhؙ̑A��sÔ.9K˧ܦ-ݘו3����cGʹͰ9ҸѩÝ˫ .7>AӔŕӹ҉ݤ٬TlϔeϺOЧ꺺䖤|rʽ    IDATbv렺衺?*>8рퟰ�9wm߹fZD��҅��仌MJɝ]Ӵ0JdԓÆə׬-ܬL]d7i[Ƕi;fLϒ��ɣR+ulńMࠈ̪_ղ��d��w����r塠2∍0g&_ǂ   ri;{B   >챃5m��تCBˉ9kY��k��Ъ`uџr4ƾնգ80-ڛФ΃ɦY҅ҼعΪ]Ak4Fⴏ����Ҿ5G֑㵟Ǹ࠼rȜ}��ȣՂ߅IG��׽ň$g稬��3f͸,H\omй㾘w>��0sΪ|衇۔JLXŰߎAϖȭ9%?$����ኜA֋ֵ͋ǏӴ瀬IJѝ��޻>|契⠉ϯߓ޽ΨփJ䝕����նȠ<��f��Ĺ΢ܘɳ��2��K=\ݿ8ƵlǾ"樘+Eƾ��ˣ"ާPͲ٢��[ӖR
ԢʵuĻGd摣eÀR霃ꟽCꟻT
Йb)ڱηߘŹv
Mڛ'ֹᎬіeʼȴ^1Ҫ*cڝ��˶9h~?ׁ��ܣЯЦͻ⻭ֹ\ϸ3ӊ6։ƌͅΑK٤ΝzɌߛ1Qгp̻jڸ^^>襹��쥝��뗰sÒ±p?}ì �ۊųܭ��ץˈ&ѦMPΑFCǼƦ0֙҇�ΩVhВƤ٤ϥaԼԭ0ҽ��͒>풇Ӎ6ܰmٽȇּ��촏顂ܩģψ͋×2э#ƖݠԬ٣à&lإᇰĘ"ņ9��Ymϼ��5?KKƎxs?۳SO=̈́Ь8vخĂ}eěөf߹v3��Ȯp~Ž:>·=ؘ訋дvȦHMƌĖ̜߱9$㻝䨏ǽҾĦܸ5慐Ɛc>ᱠkɄqx7Y|ӲæР'#Sd<BࠣӬ߂f̄λ0ѠAọ̀޻ܬb��1ퟀ�ܷߡXܘ†ɑ8����뛵<`nIَI$̡1C悡zX/0YNKQ›��ѼHܠ؈$ϐGîR ۙÁ㣛İØu얽mܩȘ��r櫣bVÒkܛ}njژѣ55cDBϯ䔄<ؼؘȳԮ$WϤl��†؀͡ߋ|��Gӫ3ȉβk|WE5նJ翶E)Q](iväئ��Yݚݩw܊›ԟ*ᰃ+s̸qࠅǑ��Ȍ˭*Ԍ6бڲ4ٵ0ٟ)-Ѭ4ᇑ-ΤܫNձfǠݜ:
��Ї/ެ]Ǽ$㈼ ?ݹ׬wӍ2㕡ӫ㵥ࠅWIsߺoप޳JЕWצ؇㝳ɬΆҦG~��د߽ƧְدߠC]:ă_JF9%戇׻Ͻдǽ��ۍK;\hٕ彡ࠨݴ~��޲Lz^Hzv͗o߽[ی5Hz8檤㐢p¨ܢ¼:Ζ;ݽqƁ2pҗ̛OϽ��Ţӫ܏R~��òDṢ	֝SںPܜ۷&g��@����Nh/՘-ȵҝEɃ焦;̖��نȠϺ1Džړ��UՑÅ{챺郢/ǙRَ׻ޏ@ʳʅک9Ï@˥'''dі[豩0ԡȍڍy஽ÀȢc>݊Ȥ��‷߻T3%��.PـX÷ϣp��ɰùփ3a@ԃSشІμPߑܻɠ҃ȋ#2۴9(ބ��}A5߃ߡޤWXAȰ��69٩+ܡGR— ژ—��LٝĸƊਗ$6ȯĹ>_2̥IӉjݜƶ裏ꒂ_|ϣr䒇永[Сd0ՖĺðᷜƠ3��و2
2��.;Ǎ9aޙ'28·!鋏#̊~ïv(/ꘈlͶ޵ב덥ن!i_҆Ȇ㈝,#��#˿��-*m��ԴӆǠ2ЪB    ঢ়ؖ��֣ퟏ�vT˩ٙҾฦ~ʝm4��іߙ0eïՀ/4â簚ջ͕ࠑõVׂF܈��ʋǐ��IڟāuF&8♟W{oÌܮJ��ƺI맙}߃R7ܱ��“К蜂䖨բ75?։ϱ҂࠾)]ؚ_Z껈wW擏ޖ1}��攮-%������ǜE%0դ'ټy牲쾷Iݣŋ;]䈕֐ߛӕ֐{{<��|հbӳλd��޹oѷ��ڻΎH̪ӷ⓭څޘ7Hӝ؉产Jݰе׺ⅹ����۶܈יg҆矓����x鸍}gӾ?
��)ץέd��טQzُǞsʈ��GĆ:f#wࠪŒ˥ۅ꡹Qߩ[<Ş뜽f蘲烏ɻϮ.��ࠬ��K��hQ40Ꙟa-۾��bƑ=0ͱݓأλLJcd+чTǂfўpƒӱĚѶ>��aѸҔ!وʬ|ωBje1q-ɯ䡆ԎΪሠԅȭރĢl0)˶0A#nҪ]Fܡ0Q41ۙtằ䈉)ǜ˄bsǰӇ4^ւ̯秴��6!408B
@Ġ_әf럹 ۤ乔�ᕳΣd��}����ų悂^Iߥ0쭲ܬݖ��\��W��'ۑ͂Ԫ��[ΐ?ށÀѻѵ߿̹㩇A40͢Ƈڤ1ƅQP-
퐓0������EӾǯՕ瓟s��՘ͨuYĭx͚ x}ކ3"ɁY_0Ɠ+
����s��m��+㫴Ľ7ۨèM\6ɽߘPaٿtZL͜%dzí"p
48fÜqε瘵|͢«Mzf%֖ٽԏ?#ܮډjvƱ��퟼�ࡪnjz޵ש:bďꃡڪ싆۬·ުx۠ݩxuԥˌ\b)��欆   ҮߒqZߣXaNnȾ[w߿��秩qh    
ݹ겠."s:Fޭ̶ЌŤ}?\̺Ԕ;ᯁқ��᪇݂ٝFݳ˜��ݐ!2`ܿEà帕ЧϤǵʅؑޭÖ,��әֲؒˉ8΍��FǦ2m��/מ߿��脎"]Ͽ퟇�Ͼ2©ҴHХו㧛̜uT'ʇMʼ޲ڎ1؋O؞(Ńκ��лɗǜ.ő࠺?ࠂKKʯ)}��ݰջм>RȌ껊��-ב��}��yy.2⑻ĩ2Н`Į޽&8㣏D_V6ߨGЗӧλKZn��4ÑO< =ڇיuoɟiVՃF,ԍ^`Ы¦QNƌł!؂Ķ瑖ˈL‰)ӤgV!���BޅțBı衟ۆI$��gŋʡ��āI��fV6Ib߅Ӳ	8 $ߜۏ&EbƬن˧@ֱы0?��zaZvڳā4ŸےmΓFΐF̽L|岤©GЮڶ��#꟨ϼӊr؝wɋ/ܨČDШZ̭̄⛘jb\ϕܯϽ��ؗɕ Ýg߁ڸ+ө毤b
Íö͋K>h`ʼĨaĦ5Zp">ٸ3��ɑӎ?ǭΝѠs4Űuo࠽ޚx9hmɶпr”⥛تï:ߣBǑʼn*%Żܧɦɞ\ؖ̌ߪ謢Xa瑩H鵷߻˰dg湍߶רa޴Եs'ퟫ�҇+��2ƪ 'ە8%՛BȂ/̦Jջ,h��ȫ˦e��gޖ[nyڬӋ擋/Ӷcq��Ճ<H3ش7o",Ošŝˈƺ؜sMpx.듵Қˋs٢Ȕ ͮ◗غȕޟԝ竖Wӈ²[ߞӛΫ��cϞRϷ볙or��Ŏܩ��dN܋qȝdtø��em7զߟ٩?ɯ˖+W]
E��'��֙]T\3^ί?ԁ؟/劣䧾؋Jkͣο��_Nڜ஢nĮCLZ
ڟ��光㦧|sɬ߅ڻ��tM%вط_ʜzǴܢKڱɇ娋Nӆ錊+K��½ퟻ�Ÿ��֑��㱯Ņ帑"ǜ)ݾ|GMǿޥ⩗ʿԷpvUU࠿:螻3ɤ'@B ŐBՄA@ʢퟠ�ʅAСϽÊ؞EQ͘h
ퟆ�;fB   궊޷ݻܖYwﻓ(">࠿��fʽ謳����؎밐DІއɝ˖˹֞uJ= f՜Gċ]aU~wʔg\-z^=]69뭙֟A׽ϡӾ~ތ޵F��w͔ဘV~뵙;��ޒs��툥D8;oyܴeb`yt@̐ ɕ̊ҝxᐔ$Ɓƹ"șøࠀ%࠘Š��LjDˡߠôݜ̕&0f$b$u3Фʱ`ʡ0 ǹ۩ȩ-:}²̆̄Š܁@vŋ̛͎{  B>K䆻|Z׳=���߮畮만��ىƙٸ]ۆaఌލHLjVϳKӹj_ؤ҂aV̥瀠 Ɓ9̗A$6 dV4`إQܯ‹ڟk��гΰ۪͗u4h,<׵坰��Ļp/ܬ2ޗgPϰbӖ C䡝`��ʷVҰ̂�4ɟFoL|��<`ðѹ��Ɓ+BޑЛn����OƬJ+즇©#
EqɣݎސBࠣ.̘࠱ηצeKQ ȸ��Όަΐ6lj"Vٿ+�� 6Ü֧̆#Lp޾��&ΐi࠽XIa`}b��Z=a⾩ލ`ǼVҼ`5!ŧ]EƇ~��뢁A荰ݰÍշʳ  ®'N݄Ŵ؆ᘻڱ͆zיg먘˯}錫8WN^��ǗcԀΖ>X΍̤H>|ЌؿWF������MGIeڴھS_ߝna��ťhjBأq{헾ό_׍ג錠ωӠ܂@ЙS��`����r䡁(àϽfƍӡ.۞yXǭћlxbЬ;(oة��̲ۦإj赚/̥֕בĤ侇Kޣٔo࠙מzԔ࠺niϛvV[NJ誩lazl纍ܮ!̦ߠ��ʸќտԆm7Iǒƥ2EEۏ=mZaA.����Ȯʫ\'ͦџ뇟ӡj\ʣ™ESաhŷ��ߥjͿZApӝ�� wֻ~{Ѽ{ϗeԕ̥۳?+֮aPսד$з˪��ܫ́G܁(零Lꆎ]將޽Ρذ2GͩáР9zйf��Ü͖ӊ��̩Ԍ#VPǧ��̙fzꑀ”
(Ø2AӼ��    4Jl0Z嘂آʡV1՜v١듃›贘T9��`j3f��ПcŔʳШٿkĂ3`SȎҵ��ؠåʸX����/ށޟù��}؝T{Y#yc^D3۵؝ֹ ٠EۆӪ=즑ʘ����5E̢w��췞xBү1xə ڹǠ3eç725{ƴ_1kr舁芫ВԹܞ��mߠeဨ瑳��؞��44߅Μޛu軷۳=/ԟ©ٲ˺ƜΦʆ38ўʲϭNJ5ym¹ퟹ�i7Ě��ʯγºࣴ3S#ݜ%s��z㯜ܶޒq �� gнC@ѥڌӬڶ߯ڨ��BеیնњÃ0ȧࠟQƩꓚ&VūϽ&<úޓĴnݘֶ@Ә��͎ֈӶ댯ְꪤܷΙױ´м@F߿޺��İLjəOJeʦI��ۺ^��kZӈ��ϺTѸƇߒʩчQ��؉FЎۺuд߸֌tMӾ����+ѕٓ? Ņߕ5K׋⫮ю蟐��cGKӞ#ڥV،̳��nߎ6^ތ׮:EVſ͍ZҒo|Ujмִ͛ĹõfEj٥ѫٲ
 Õp# ݫޠ̦ό ԟʨӯݗT߹e��쪞pڗvᶻҷˤ^%����6٠=AۣՇɲƷjČMΙҜ֭_ڒuڃ ӷÂ꼯ْ��ࠌӋŕ̤��=��5靾J*оޤaΆަu'ɚ?-׎`Аۀ֞ɰ��֯~��҉̗ДÃʦɧf̩ѐ|찔ӢÉ5vԺg(��4B>Cƾag  ҡѡevݱo
า࠽��8Ę>퟇�LȽ���Țޡ3'$y 3_됤oᜆ��۴ۣ"ԫ珟Ȍߞ硦ؖЂ́ԐlѰqϠ̦̦ƫs_?
 ؂舉 Ӄ  'ɵ5֘؎̞‰cۦsퟝ�x>>S`7å��ĄzGӁQ*ъڃՆ^Пɧ:::[��N̴[O4Ͷٞ��܃ȗRljìѨڧݹϪ`ĜҎ1κ��=ğ©͘fۈ ̛��/<f༧Ǻw߳]
~Jٺ䪜͚5Z瀍łϽ��õm(ٲՂލ@pyD҂#?��̂`��҃ʳퟟ�k:Àى   dc࠹״ꛏßo煝ę!,ӷРL
T͇uԊq=ûL��΃��{VΚɩ>oy̱ӻﻨOئٮvzū^§рإKש`Eī��A)ߏ}]ܵ��Ų׺c̼ٜxٔ��ϬЧ猎ߐ��զȏ׆[ϕ瞇JǶ܊1f5֊5ѡeʹ��MڐðĚe`ր%ڧʽ��v
sȄmfγsd盾ڡß
*����ᮂНa��؟%rԌ۪;9l谡Б鑼joӛ]мⴲ������]g鋙dԉ<:ŷًR9܄v΃,僠h܏۱ճʠ   ͣȫԅ<2>��=(Třպ-��툱ӷө��o؈\U=��ɍ̨ࠪ9Ďќǎ麖)ӡķ9\ǼtK��حצ��]���^ڿ��ё��ɖޗێzϬ}ūƫ��ә៼鼝Ш��§F¼��Ƌ9��Xقi衰Դ"И_E%uퟯ�`F؁РڃTĕ|@ŧq߃\0ڀL0ǡƃ`0VE%jPQK3ࠊE��I��Q��
`‰ۜՀ"modˀ{F|v��"Á hbl��côݓڏӁӞֺ<R)ڵ\ۤɲLHHکMk詝5[捯'��YH��Mq��|_��A ȀSᘛυ��ͽ��Aڃ4kτD܅/ża��oޅҠ끦A��ۓ蚃V3ҞǦD=h
a��ۋ}?ƏŒǽȡ좠��ڦ>ࠍ6ژӇͼP⛀#Čʦɳ t4!,.\죠PĻ ĠTrΠSߥ꒥z6  >n��Oݲ˟+424Y|܀&ߣQbefܛB(ϸ袋TZ2OLԘ"ث��Ȳŕ؋҇ߖׄ픟/璎/f��Jij/x֚4mā4c脡-҇˼AɷƮ s֟��шČۙ��嵇����Ǜ%tնuМ|匩7Ȉ{��ђ��ꠈ|ˇ٦긌zLFa۫²��J]��ߖ)ZE࠷Oߌ࠿UәԜ$0��қl]z׺ֶ6?��#ߏȂ��˝ӌ(葠ȩف؝��‡澯٦޽=ӘوdףҶ$����^ϿƴTͯV벪7T쨨-ѦGڪo*݃ܛ=⾷ߓC[t��ē]ࠍ6֚c)ϰοէD࠷.{����ǴهėЌ뵦Èб2��څO˟~����ʢڽ��vە6Z��%����?"G࠾8ʴo / ӁōMȁ2ٓ`��Ă˜_��̄ɬC†B��݀0]᱐懆Ģ qɝ݅߰Ҩ95ī xػǜ¶̼1AŇď즱tx׉p3ۗţ Ÿ9܊ɋʱ��Érw࠿ 55>弡}Ϙq݆NцhRiĢ��KĖƟgb ͉A:'ퟙ�xѱي͚HեŒᩓ0]"ٯk˶ʺ"ʥ&5Hy굻U@CDžɊ װތছOSᦖ̌Όs��`Ih?ȢўɝM잫ζɰƶƻӆYQsjϘ峨ŃȜH0в_4��2?υ��ۚݹ暁ӛ3ɵ͛.1Mơ{ӣ~4"c��J;N̑T࠾60̢a9��@lܫԩJ!ӏ֧4ͣZծ˶ʵ䈯$矻U��@J!퟈���ῄЯܫxf7ۨà־F#>Ͻ�� >z#䑧鮔͗<ѤݱPLܸъտ͋,    IDATؔ9ܐ;4p+ߩ��ځehOӠ��]��и̪A־52�ȁЍژ-]cFʦo8F��ʐ!e��^V��Ψ6֨Pؔ@Pڂѱ&|��뺟Շ0\5ň{໤ҟ¡��uʰʛIwփ˛gHשkĥʃљ魨޻̌٩+νT^h䳭-Z&`䫍-zjάс͞d��ؽ��꒑ڏ镇o܁̜ߣٯؔrkĤG۱xr��՛ϖQǼ: 0ʗВЯﺯɫԬ_Y��ʨ (Ӄڳʨ+͝P_퟇�揻H��޺��͘8sƂO.ȎѦퟶ�ٹZ̦m��eÔϹUP.Ώ׋֕b֔ۋںɃḙ��xࠔg=+Cʵҽ��2]ҳ>"շ<,r计:p��ۃ琛FMÀ ̂Dv̥ـ>TxԅʥQsӃnhϹ҃CsŠʘ��@ᐙװ֕שƆ��ăalцqFЬҭ3ɔw3?��#cp莿��>,yخͥ҇
ͪغ{҂矂(`bS4!;F̲ŧ4
.̐EEѸ����ڛ͗;׳ɚs懓ű!ⴌLO^-(k╺ݩzBڂŵC+a}I@һHa중&Hޑؽ癌Ҽϩ
εt#B1}ҿ.\ŀ銽1,ߨ ,0Nԓ>ԁ ݴһU��ǭh̹"Đ˃۳3ԉّ뿽svƝ
9pι}Ľޭ߳JfOD({߾\koГsiחė͘uƷ

r��ɝJԧ4շK‚°0ˢɽퟍ�߇>���NAɹŨۖbR/X‹=GΜՊ[Յ46ۨܞkϹ'аߣggṳ̊ ⾷ߧ
ɑ<~��܄@¸N>c~֖^Ʀպ/үJӑ껷ɋÂ:ѩ4fϖ5̖m��W��͏~ӔSǗN㳒軑ӨѼ͉>��>%��̸����ըڪCșݔұʬ薻ϽAV����}(žPʟV6ƴ/|Ɋ˱ệ7ϗMҮe+ƫ��#ƻ˜Mޏʡ4ij̋~!{qݜ��힘xݴラȂŲdӤڦշR癥>$㵲lƢY;~Ӵ͙J͕4ڡ8K:пش^��FJ%h��)ɨ$fʟ뺛ϓߛoI##_}ŔV/؅��؍d鶻˃࠾ʚR5؇��2Sڌ��ozܜw֥R_ۯ޻�ֻȂ˯@ړ-ٵҾצNխǏֹ逝��֛"����bıa⇉ǻ(ύZbG֫젒e\ØЫrn١zͅìȃƉǾ0?��ăaE Aٙ8Ĝ
L\<ȲK0$IL),ҙgޥأneы߿��ĹQ'&>̶'PBSAҝȑL��ץ)ޣU1Ҝ7ПʻŃ  `����ợwPG᰷4կ֝\��ѪL@ "߿��䋙㿖Զڦ"cը7Dzo܇ײ{ז簕IyԶH�� ²0Q|ŀ8{̉ߌ��ތ��ĹӢ'뫈`rFCƪ и
݇adƶf&邾ص��ʨAĜܭ6Iû��h۰X̏0|׼]#ßX`
佐h 
ؼђhD��ࠞӿو$6٠ö3Ԗ JT܋����ֹhiҷ`՚~ދk[һʂ ȹ��˖ϳ]wޝ*��ߧ{Z͇9 ؼ����=镩Դ}؏_ɀÏŇq~��aʚɇΜƁ<Ь–.-Oу˧����5��xNn��ãިӎ~͔3ΐjཫ{RӱKAGڹɴКя宠ٛVN;̦'ܤրת#NJ뉸S͕xyLj��鍉ѾAfʇш��
š|>Zҝ>��ΒϰIͧݯ��ޚł]+ĜG?t״࠶Ӗ:ͺNJ帷J易剠 nΐ5dŴ>8Dw#+̃ᴩ҅࠺Ɍ��썧JſҞOݗ��Ҹ��皒ܓ/ιsƱƏHe囏&յw߫Ƙ��KſĆҪh˹ȟ/޳gK��mퟢ���,¶,˶$햮۔Տ?(��ꅿРeǏϓ��ޯCw߁ࠄԮ@ZЃ촮Yr����騊㧖˒ܾ$Ԯܗ��ĢmëСV䠯ʞ롟8м坥ͪǓŒ`‘AȐ̷ʃО
"��Μ԰e‘؏
?GAєʪJ��vaUM ՟��ıēߦࠇ1С"teퟸ�ݲyrݝⷺ��a

切换文件路径

<?php
    //$file_name="b.png";
    $file_name="乔彬.png";   

    //如果是中文的。需要转码 php 这个古老的语言仅仅识别中文转换为gb2312
    //$file_name=iconv("UTF-8","GB2312",$file_name);//在google浏览器里边试了下,。php 5.4 下边 中文不会乱码---放开直接报错
    //$file_name=mb_convert_encoding($file_name,"UTF-8","gb2312");//这个也能转字符编码 但是 就当前这个来说并没有什么卵用
    //Notice: iconv(): Detected an illegal character in input string in D:\phpStudy\WWW\087_fileDown.php on line 6  //这个啥意思

    $file_path="./image/".$file_name;
    //1、打开文件
    if(!file_exists($file_path)){
        echo "文件不存在";
        return;
    }
    $fp=fopen($file_path,"r");

    //获取下载文件的大小
    $file_size=filesize($file_path);
    //echo "文件的大小是".$file_size;//这个也不能有

    //返回的文件
    header("Content-type:application/octet-stream");
    //按照字节返回
    header("Accept-Ranges:bytes");
    //返回这个文件大小
    header("Accept-Length:$file_size");
    //对应客户端弹出的对话框,对应的文件名
    header("Content-Disposition:attachment;filename=".$file_name);

    //向客户端回传数据

    $buffer = 1024;
    $file_count = 0;
    //用于判断数据读取
    while(!feof($fp) && $file_size-$file_count>0){
        $file_count+=$buffer;
        $file_data = fread($fp,$buffer);
        //把部分数据回送给浏览器
        //echo $file_count;//输出文件的时候不能有其他的echo 否则实际下载的写入的图片大小会和实际图片大小有出入
        echo $file_data;

    }
    fclose($fp);
?>

代码封装:

<?php

    function downFile($file_name,$file_sub_dir){
        //$file_name="b.png";
        //$file_name="乔彬.png"; 

        //如果是中文的。需要转码 php 这个古老的语言仅仅识别中文转换为gb2312
        //$file_name=iconv("UTF-8","GB2312",$file_name);//在google浏览器里边试了下,。php 5.4 下边 中文不会乱码---放开直接报错
        //$file_name=mb_convert_encoding($file_name,"UTF-8","gb2312");//这个也能转字符编码 但是 就当前这个来说并没有什么卵用
        //Notice: iconv(): Detected an illegal character in input string in D:\phpStudy\WWW\087_fileDown.php on line 6  //这个啥意思

        $file_path=/**"./image/"*/$file_sub_dir.$file_name;
        //1、打开文件
        if(!file_exists($file_path)){
            echo "文件不存在";
            return;
        }
        $fp=fopen($file_path,"r");

        //获取下载文件的大小
        $file_size=filesize($file_path);
        //echo "文件的大小是".$file_size;//这个也不能有

        //返回的文件
        header("Content-type:application/octet-stream");
        //按照字节返回
        header("Accept-Ranges:bytes");
        //返回这个文件大小
        header("Accept-Length:$file_size");
        //对应客户端弹出的对话框,对应的文件名
        header("Content-Disposition:attachment;filename=".$file_name);

        //向客户端回传数据

        $buffer = 1024;
        $file_count = 0;
        //用于判断数据读取
        while(!feof($fp) && $file_size-$file_count>0){
            $file_count+=$buffer;
            $file_data = fread($fp,$buffer);
            //把部分数据回送给浏览器
            //echo $file_count;//输出文件的时候不能有其他的echo 否则实际下载的写入的图片大小会和实际图片大小有出入
            echo $file_data;

        }
        fclose($fp);
    }

    downFile("乔彬.png","./image/");
?>

猜你喜欢

转载自blog.csdn.net/u014449096/article/details/80707174