Autor Zpráva
mahdal
Profil
Dobrý den,
mám stránku, a chci, když kliknu na .doc, aby se mi soubor uložil do nazev.doc. Když je vybrané .txt, tak mi to funguje. Formulář odkazuje na soubor ulozitdotxt.php:

<?php
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$_POST['nazev'].".txt");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($_POST['text']));
echo $_POST['text'];
?>
.
Vím, jak to dat na .doc: upravením ['nazev'].".doc"); z předchozího formuláře, ale nevím to, jak se zaškrtne typ .doc, aby odkaz ve formuláři byl při tom zaškrtnutí ulozitdodoc.php.

A formulář:
     <FORM ACTION="http://fasttext.ic.cz/ulozitdotxt.php" METHOD="POST" >
        <table>
    <tbody>
        <tr>

            <td>Název bez mezer:</td>
            <td><INPUT TYPE="text" SIZE="60 MAXLENGHT="30" NAME="nazev" VALUE=""></td>
        </tr>

        <tr>
            <td>Text:</td>
            <td><TEXTAREA COLS="45" ROWS="2" NAME="text"></TEXTAREA></td>
        </tr>       
        <tr>
            <td>Uložit jako:</td>
            <td><input type="radio"  name="fast" value="txt" checked>.txt
                <input type="radio"  name="fast" value="doc" >.doc</td>
        </tr>

        <tr>
            <td><INPUT TYPE="submit" VALUE="ULOŽIT"></td>
            <td><INPUT TYPE="reset" VALUE="RESET"></td>
 
        </tr>
    </tbody>
</table>
</FORM>


Mooc prosím poraďte mi.
imploder
Profil
Vím, jak to dat na .doc: upravením ['nazev'].".doc"); z předchozího formuláře, ale nevím to, jak se zaškrtne typ .doc, aby odkaz ve formuláři byl při tom zaškrtnutí ulozitdodoc.php.
To asi nepůjde, leda že bys měnil action javascriptem. Vůbec to ale není potřeba. Prostě měj jeden skript a rozhoduj v něm o příponě podle zaškrtnutí.
mahdal
Profil
imploder

Díky za snahu, ale už jsem to vyřešil:
<?php

if($_POST['fast']=="doc"){
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$_POST['nazev'].".doc");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($_POST['text']));
echo $_POST['text'];
} else {
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$_POST['nazev'].".txt");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($_POST['text']));
echo $_POST['text']; }

?>
imploder
Profil
To jsem právě myslel. Protože se mění jenom přípona, můžeš to zkrátit uložením přípony do proměnné:
if($_POST['fast']=="doc") $ext = ".doc"; 
else $ext = ".txt";

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$_POST['nazev'].$ext);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($_POST['text']));
echo $_POST['text'];


Kdybys pak měnil něco ve zbytku kódu, nemusíš to dělat dvakrát. Přidání dalších přípon je takhle taky primitivní (při větším počtu se uplatní switch).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: