Autor Zpráva
Jirka210
Profil *
Potřeboval by jsem aby se soubor, který je umístěn na stránce neotvíral, ale aby se uživateli rovnou nabídl k uložení.

Server: IIS, Klient: IE
habendorf
Profil
Soubor jakého typu?
Jirka210
Profil *
*.txt
habendorf
Profil
Mám obavu že to nepůjde. Asi.
roberta
Profil
s *.txt to nepôjde. Skús to zazipovať...
Yuhů
Profil
buďto zazipovat,
nebo pro serverové machry existuje možnost změnit někde mime-types (nebo jak se to píše) mime typ přípony, takže se bude posílat s jinými hlavičkami než jako text/plain.

Jinak to nejde.

Osobně to řeším tak, že lidem normálně předhodim odkaz a pod to jim napíšu, že si to maj uložit. Lidi jsou docela inteligentní opičky a zřejmě to ukládání zvládají.
Lemur
Profil *
Jde to. Stačí poslat vhodnou hlavičku. Nevím, jak se to dělá v ASP, ale v PHP to dělám takhle:

header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: ".gmdate('D, d M Y H:i:s')." GMT");
header("Cache-control: private");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: pre-check=0, post-check=0, max-age=0");
header("Content-Description: File Transfer"); /* nekdy zlobi v IE */
header("Content-Transfer-Encoding: binary"); /*nekdy zlobi v IE */
header("Accept-Ranges: bytes");
header("Content-Length: ".$velikost_souboru);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$jmeno_pod_kterym_se_to_ma_ulozit_u_uzivatele);
@readfile($soubor);

Části označené /*nekdy zlobi v IE */ někdy zlobí v IE, hlavně pokud je obsahem PDF nebo podobné typy, na které je neinterní plugin, ale proč přesně, to nevím.
Fred
Profil
Pardon omlouvám se za OT. Lemur nemohl by jsi se mi prosím podívat na tohle http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=7&topic=57 34 jsem na ty hlavičky a php obecně fakt lama a nevím si rady.
Lemur
Profil *
To je z toho odkazu je jenom proti cachování. Hlavní trik je tohle:

header("Content-Length: ".$velikost_souboru);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$jmeno_pod_kterym_se_to_ma_ulozit_u_uzivatele);

Nejdúležitější je to Content-Disposition: attachment;, to říká prohlížeči, aby to nezobrazoval, ale nabídl k uložení. Bohužel, je to podle RFC jenom extenze a ne integrální součást http, takže to nemusí chodit všude, ale v běžných prohlížečích to chodí. Viz RFC 2183 .
jonáš
Profil
kam mám prosím ty hlavičky vložit? :

<a href="<? echo $result."?".$url; ?>">výsledek stahnout zde</a>


j
Acci
Profil
Do toho souboru, který se má nabídnout k uložení
jonáš
Profil
zustane to tam?
jonáš
Profil
ja sem blb, samozřejmě že to tam nezustane!
jonáš
Profil
ale děkuju.

j
Leo
Profil
"Do toho souboru, který se má nabídnout k uložení"

Do toho souboru tezko, pokud to je txt. Header() je syntaxe PHP. Leo
Acci
Profil
Leo
A kdo říkal, že to má být txt?
jonáš
Profil
nojo, je to .sub :-)
jonáš
Profil
ale to se da přepsat v tom filename:
header("Content-Disposition: attachment; filename=".$jmeno_pod_kterym_se_to_ma_ulozit_u_uzivatele);
Acci
Profil
jonáš
Aha, to jsi měl říci dříve. Musíš to uložit s příponou PHP
jonáš
Profil
taky už jsem to vymyslel.
jonáš
Profil
teď akorát nevim, jak pomocí php zapsat na začátek toho souboru, pořád se to zapisuje na konec, i když tam mam funkci Rewind($fp);
jonáš
Profil
tady je ten kod, poraďte mi prosím:



if(!$fp=fopen($soub,"a")) exit("CHYBA 3");
rewind($fp);
$headers="<?\nheader(\"Content-Disposition: attachment; filename=".$soubor_name."\");\n?>";
fwrite($fp,$headers);
fclose($fp);


j
jonáš
Profil
už sem to vyřešil...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0