PHP prakticky/Upload a download: Porovnání verzí

Smazaný obsah Přidaný obsah
m Undid edits by 37.48.20.232 (talk) to last version by JAnDbot
značky: vrácení zpět SWViewer [1.3]
Řádek 1:
Tato kapitola popisuje celý princip přetahování souborů mezi serverem a návštěvníkem webu. Pro názornost je u každého příkladu zpracován formou jednoduchého příkladu.
 
== Nahrávání souboru na server (Upload) ==
Hotovo
 
Protože zde je nutné uvést i HTML formulář, je následující příklad kompletním zdrojovým kódem ukázkové stránky. (Název souboru je upload.php)
fsfsdff
<syntaxhighlight lang="php">
<HTML><BODY>
 
<!-- Zde si povšiměte parametru ENCTYPE: -->
<FORM method="post" action="upload.php" enctype="multipart/form-data">
<INPUT name="soubor" type="file">
<INPUT type="submit" value="OK">
<INPUT type="hidden" name="odeslano" value="ano">
</FORM>
 
<?php
if($odeslano=="ano") {
move_uploaded_file($soubor,"soubory/".$soubor_name); // Překopírujeme soubor do zadaného umístění
echo "Původní název souboru: ".$soubor_name."<br>";
echo "Velikost souboru: ".$soubor_size."B<br>";
}
?>
</HTML>
</syntaxhighlight>
 
Tato stránka nejprve zobrazí formulář pro výběr souboru. Při odeslání se soubor nahraje do složky soubory se zachováním originálního názvu. Po dokončení se návštěvníkovi zobrazí informace o názvu a velikosti souboru.
 
'''Princip:'''
* Parametr ENCTYPE v HTML prvku FORM určí, že se mají odesílat jak soubor, tak i formulářová data (Lze přidat další políčka)
* Při odeslání formuláře uloží server soubor do dočasné složky s náhodným názvem a uloží tuto adresu do PHP proměné, jejíž název je shodný se jménem INPUT prvku FILE. (Políčkem pro zadání souboru)
* PHP skript překopíruje soubor z dočasné složky do složky soubory a vypíše příkazy ECHO název a velikost nahrávaného souboru souboru. (Ukládají se do proměné $x_name a $x_size, kde x je název políčka FILE.
* Po dokončení PHP skriptu server soubor z dočasné složky smaže!
 
== Stahování souborů ze serveru (Download) ==
 
Následující zdrojový kód je veškterým obsahem stránky download.php (ovšem můžete ji libovolně přejmenovat)
<syntaxhighlight lang="php">
<?php
$soubor = "soubor.txt"; // Adresa souboru jež chcete dát na stažení
 
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"$soubor\"");
 
readfile ($soubor);
?>
</syntaxhighlight>
 
Po kliknutí na odkaz vedoucí na tuto stránku se zobrazí dialog, zdali chcete soubor ''otevřít'' nebo ''uložit''. Po kliknutí na ''uložit'' se zobrazí dialog pro výběr umístění a názvu a po potvrzení se soubor stáhne.
 
'''Princip:'''
* Hlavičky HTTP (header) zajistí že se zobrazí dialog a stáhne výstup PHP skriptu. Když bude skript obsahovat pouze příkaz ReadFile, bude totožný s obsahem souboru a tudíž to bude to samé, jako kdyby se stáhl tento soubor.
 
[[Kategorie:PHP prakticky|Upload a download]]