Sziasztok!
Van egy textfile, amit egy weblapom generál. Kipróbáltam IE alatt is a weblap működését, de sajnos az IE magát a textfile tartalmát mutatja be, annak ellenére, hogy a kiterjesztésének semmi köze a txt-hez. (Gondolom, a fájl tartama/kódolása alapján dönt így.)
Mit tehetnék, hogy a gyakorlatlan felhasználókat ne kelljen belekényszerítenem abba a kényelmetlen helyzetbe, hogy a "Jobb klikk->Cél mentése másként..." opciót ajánljam fel, illetve azonkívül, hogy pl. összezippelem a szerveren a fájlt. Sajnos a felhasználóim nagyrésze azokból kerül ki, akik még mindig pohártartónak nézik a CD drive tálcáját. Vagyis nem akarom őket plusz teherrel traktálni.
Létezik olyan html-be ágyazott kód, ami márpedig egyértelműsíti a böngészőnek, hogy a link mögötti tartalmat márpedig el kell mentenie?
- 843 megtekintés
Hozzászólások
header('Content-Disposition: attachment; filename=sample.txt');
Ha attachment helyett inline-t irsz, akkor lesz az ami most van, így pedig felajánlja letöltésre sample.txt neven.
__________________________________________________________________
Dúdold ezt a dalt, és aki gyűlöl majd érte, az lesz a bosszú népe.
- A hozzászóláshoz be kell jelentkezni
köszönöm, kipróbálom.
- A hozzászóláshoz be kell jelentkezni
Egy darabig eltartott, míg rájöttem, hogy te egy PHP kódot írtál.
Nos, én Perl-ben akartam megoldani, de mint kiderült, a cgi.pm modullal zsákutcába futottam a header függvény miatt.
Okulásul leírom, hogyan oldottam meg:
#!/usr/bin/perl
use CGI qw(:standard);
my $query=new CGI;
$file_name= param('letoltes');
print "Content-Disposition: attachment; filename=$file_name\n\n";
open (FILE, "../downloads/$file_name");
while (<FILE>) {
chomp;
print "$_\r\n";
}
close FILE;
exit 0;
A lényeg, hogy mezei print utasítással kell a headert a HTML forrásba bevinni.
- A hozzászóláshoz be kell jelentkezni
Müxik, az a lényeg;)
Szivesen, maskor is:)
szerk: Bár nem vagyok perl-guru, ha jól értelmezem, ez a fenti script ellenőzés nélkül bármit enged letölteni.
Persze ha csak az igzémpl miatt tisztítottad meg, akkor bocsi.
__________________________________________________________________
Dúdold ezt a dalt, és aki gyűlöl majd érte, az lesz a bosszú népe.
- A hozzászóláshoz be kell jelentkezni
Ja, bocs. Fentebb már írtam, hogy köszi. De a végén csakugyan elmaradt. Szóval köszönöm.
Igen, jól látod, ez csak egy működést vázoló "kivonat".
- A hozzászóláshoz be kell jelentkezni
Jaja, arra reagaltam enis.
Okés:)
__________________________________________________________________
Dúdold ezt a dalt, és aki gyűlöl majd érte, az lesz a bosszú népe.
- A hozzászóláshoz be kell jelentkezni
Ezzel nem a HTML forrasba viszed be, hanem a HTTP valaszanak header-jebe.. azaz pont azt csinalja, mint amit a kollega irt PHP-ban.
A valaszban a headert az adattol egy ures sor valasztja el. Amikor a printtel kiirod a megadott sort, a "\n\n" lezarja a sort, majd a headert.
Utana megnyitod a file-t, es a ciklusban mar a content-be irod a tartalmat.
A Perl CGI moduljaban nem lehet a headert valtoztatni? Szerintem kizart.
---------------------
Q: Why do real Java programmers wear glasses?
A: Because they don't C#.
- A hozzászóláshoz be kell jelentkezni
Ez a szebb megoldás. Lehet gányolni is: header('Content-type: application/octet-steam');
Az ilyen típusú fileokat a böngik gond nélkül menti kel fájlba, meg se kísérlik megnyitni. :)
Na de ezt csak azért írtam, mert rég php-ztam és jólesik legalább fejben gyakorolni. :)
- A hozzászóláshoz be kell jelentkezni