Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Sunt situatii in care anumite fisiere care in mod normal sunt afisate sau interpretate trebuie sa le oferim pentru download. Astfel de fisiere sunt de exemplu imaginile, fisierele .txt sau altele asemenea care in mod implicit sunt afisate in browser. Daca vrem sa fortam downloadul unui fisier, va trebui sa folosim functia header() din PHP:

< ?php
$fName = 'layout.png';
$fSize = filesize( $fName );
 
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $fName);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $fSize);
readfile($fName);
exit;
?>

La apelare, scriptul va citi din directorul curent fisierul „layout.png” si ii va spune browserului cu ajutorul headerelor ca fisierul trebuie downloadat, nu afisat. Implicit cand se va apela scriptul prin browser, se va deschide casuta de salvare a imaginii.

PHP

17 Responses so far.

  1. Florin Goanta says:

    Multumesc mult pentru articol. Chiar mi-a fost de ajutor!

  2. Mobella says:

    Vaaai!! Deci zeicesc, acum o saptamana cu asa ma chinuiam, am incercat cu CURL sa fac request si sa trimit header-e, insa sigur am gresit ceva, din moment ce nu mi-a iesit ­čÖé acum incerc si varianta ta

  3. rami cori says:

    multmesc mult pentru articol mi-a fost de mare ajutor

  4. Mihai says:

    ├Ämi puneam ╚Öi eu de mult ├«ntrebarea asta. Mul╚Ťumesc mult pentru articol. M─â simt mai de╚Ötept acum :D!

  5. Enciclopedie says:

    Cred ca ma chinui de ceva timp sa fac acest lucru. In sfarsit am gasit articolul care trebuia. Multumesc mult. Mi-a fost de ajutor.

  6. Florin Goanta says:

    Mai avem nevoie de astfel de articole utile:D

  7. SaltwaterC says:

    Pentru fi╚Öiere mari se recomand─â o implementare alternativ─â pentru readfile() deoarece readfile() face buffer complet la obiect, iar ├«n func╚Ťie de set─ârile din PHP, va da eroare de alocare de memorie. Chiar ╚Öi a╚Öa, poate interveni un timeout la execu╚Ťia PHP, deci va rezulta un download incomplet, motiv pentru care se recomand─â chestii gen X-Sendfile (Apache, lighttpd) sau X-Accel-Redirect (nginx).

  8. Ceasuri says:

    Foarte util aricolul, de 2 zile ma chinuiam sa fac chestia cu downloadul de imagini, dadusem de tot felul de tutoriale unele care nici nu functionau cum trebuie. Ms mult.

  9. Mihai says:

    Foarte util, m-a ajutat la licenta, am facut un site dinamic pentru o farmacie si vroiam sa downloadeze pdf-urile de pe site. MS

  10. Naruto says:

    multumesc mult … nu i-am dat de cap nici cum

  11. Spete says:

    Metoda este extrem de utila in cazul in care aveti foldere cu diverse fisiere pentru downlodat. In loc de apelarea lor directa, se pot downloda prin php, si astfel se previn situatii in care in folderul respectiv pot aparea scripturi pe care hackerii sa le execute in diverse scopuri.

  12. mein mindz says:

    Pot folosi asta sa ofer vizitatorilor posibilitatea sa vizualizeze documente .doc sau .pdf fara a le descarca?

  13. Sergiu Tot says:

    @mein mindz: nu se poate. E vorba tocmai de efectul contrar, sa descarce fara sa citeasca ­čÖé

  14. print says:

    Merci de articol, cautam asta de ceva vreme

  15. piese auto online says:

    merge si pentru txt si pentru csv! super tare. aveam site csv-uri care trebuiau downloadate cu alt… si ma scoteau din sarite anumiti operatori, cum sa intrebi aceiasi chestie de 3 ori??!! Problem solved. thx

  16. deeukaa says:

    nu reusesc ….

  17. Sergiu Tot says:

    Deeukaa, ce ai incercat? Unde te-ai impotmolit?