smarty Posted January 31, 2005 Report Share Posted January 31, 2005 lieta taada, ka ir forma, kuraa nospiezhot pogu, jaaparaadaas tam logam "save as..." un jaavar lejupielaadet failu, probleema ir tajaa, ka tas fails saakumaa neeksistee (nevar izveidot linku uz to) bet peec pogas nospieshanas peec tiem formas datiem skripts gjeneree failu (izveidot failu ir siikums, bet nevaru izdomaat kaa peec tam palaist to saglabaashanu). ceru ka saprastaat domu :( Link to comment Share on other sites More sharing options...
рпр Posted January 31, 2005 Report Share Posted January 31, 2005 sākumā tev japalaizj headers, kas pasaka, ka tas ir attachments, pēc tam vienkārši jānolasa fails un jāizvada tajā pašā php failā. tas headers bija kautkas uz header('COntetn-Disposition: attachment; filenam="faila nosaukums";'); Link to comment Share on other sites More sharing options...
PheliX Posted January 31, 2005 Report Share Posted January 31, 2005 ideja apmeeram taada... header('Content-Type: octet/stream'); //lai neber uz ekraana, bet liek seivot header('Content-Disposition: attachment; filename="'.$faila_nosaukums.'"'); //lai php faila nosaukuma vietaa raada taadu kaadu gribi header('Content-Length: '.$faila_izmeers); //lai browsers raada cik nokachaats :) echo $faila_saturs; //pats saturs - izvadiishanu sagudro kaa eertaak... Link to comment Share on other sites More sharing options...
smarty Posted February 2, 2005 Author Report Share Posted February 2, 2005 oki, ja nu kaadam noder - izveidoju shaadu eertu funkciju function GetFile($file){ header('Content-Type: octet/stream'); header('Content-Disposition: attachment; filename="'.basename($file).'"'); header('Content-Length: '.filesize($file)); @readfile($file); die(); } Link to comment Share on other sites More sharing options...
Kaklz Posted February 2, 2005 Report Share Posted February 2, 2005 hm, ideālā pasaulē mēs dzīvojam, ka varam tā vienkārši bez pārbaudēm par failu ņemt un grūzt ārā apmeklētājam. Vēl tikai pietrūka pāris rindiņas un būtu vispār ideāla kombinācija: <?php GetFile($_REQUEST['filename']); ?> Ieteiktu padomāt par to, vai gadījumā lietotājam nav iespēju palūgt kādu citu failu, nevis tevis iedomāto. Link to comment Share on other sites More sharing options...
smarty Posted February 2, 2005 Author Report Share Posted February 2, 2005 nu par to nebaidies, neesmu pirmo reizi ar piipi uz jumta :P Link to comment Share on other sites More sharing options...
PheliX Posted February 2, 2005 Report Share Posted February 2, 2005 man testeejot sanaaca, ka $f=fopen($filename,'rb'); while($s=fread($f,16384)){ echo $s; } fclose($f); straadaa aatraak nekaa readfile($filename); (kachaajaas aatraak) Link to comment Share on other sites More sharing options...
Venom Posted February 3, 2005 Report Share Posted February 3, 2005 NB: /me izmanto fgets($fh,NN) konstrukciju, jo kaučkad fread ne īpaši apstājās pie eof, resp. ja bilde bija 4000 Kb, bet es lasīju pa 1024, atgrieza visus 4096 simbolus un bilde bija grauta. Link to comment Share on other sites More sharing options...
hmnc Posted February 3, 2005 Report Share Posted February 3, 2005 un kā ir ar script taimoutiem? piemēram, ja header('Content-Type: octet/stream'); header('Content-Disposition: attachment; filename="'.$faila_nosaukums.'"'); header('Content-Length: '.$faila_izmeers); echo $kaut_kur_paslepta_faila_saturs; un tas $kaut_kur_paslepta_faila_saturs ir kādus 500kb liels, vai sliktākajā gadījumā gribam paslēp un vēlāk ar šo metodi izvadīt 8mb smagu mp3 failu? problēmu nebūs? Link to comment Share on other sites More sharing options...
Venom Posted February 3, 2005 Report Share Posted February 3, 2005 nu taisi set_timeout(0) bet tad vēlams ciklā pārbaudīt connection_aborted() Link to comment Share on other sites More sharing options...
hmnc Posted February 3, 2005 Report Share Posted February 3, 2005 nu taisi set_timeout(0) bet tad vēlams ciklā pārbaudīt connection_aborted() 13344[/snapback] hmm. mēģināsim. a bet kā principā taisa visas sistēmas, kur vajag ielogoties (ne caur htaccess) lai nokačātu kādus failus ? Link to comment Share on other sites More sharing options...
hmnc Posted February 4, 2005 Report Share Posted February 4, 2005 hmm. mēģināsim.a bet kā principā taisa visas sistēmas, kur vajag ielogoties (ne caur htaccess) lai nokačātu kādus failus ? 13345[/snapback] Venom... ?? :) Link to comment Share on other sites More sharing options...
рпр Posted February 4, 2005 Report Share Posted February 4, 2005 caur ftp nokachhaa, jo visticamaak, ja tas nav tavs kompis, tad tur ir salikti visi iespeejamie limiti - timout, memory, quota utt. ja arii ir tavs kompis, tad tomeer aatraak ir uzlitk ftp serveri un peec tam caur logiem var paskatiities kas ir pieprasiits. Link to comment Share on other sites More sharing options...
hmnc Posted February 4, 2005 Report Share Posted February 4, 2005 caur ftp nokachhaa, jo visticamaak, ja tas nav tavs kompis, tad tur ir salikti visi iespeejamie limiti - timout, memory, quota utt. ja arii ir tavs kompis, tad tomeer aatraak ir uzlitk ftp serveri un peec tam caur logiem var paskatiities kas ir pieprasiits. 13359[/snapback] nēnu mani interesē realizācija sekojošai problēmai: ir reģistrēti lietotāji, kuri logojas iekšā sistēmā caur php (par htaccess aizmirstam) un kuriem nepieciešams kačāt failus, bet taa lai nereģistrēti lietotāji to nevarētu darīt pat zinot tiešu faila URL. resp - URL nedrīkst būt reālais - tātad viss iet cauri header() - kur mēs ņemam kaut kur sistēmā paslēptu failu un barojam iekšā to visu lietotājam. tādas sistēmas tak daudz ir, vai ne? :) Link to comment Share on other sites More sharing options...
рпр Posted February 4, 2005 Report Share Posted February 4, 2005 nem to pashu postu numur 9 un pirms headeriem paarbaudi vai ir lietotaajs ielogojies (kaa nu tu vinju ielogo ar kuukijiem/sesijaam vai veel kaa savaadaak taa jau ir tava probleema), ja lietotaajs ir ielogojies tad skriptu laizj taalaak, ja nee, tad padod headeri ar 403 kljudu un exit; Link to comment Share on other sites More sharing options...
Recommended Posts