Tento príklad slúži na nahranie súboru na server pomocou jazyka PHP.
V prvom rade je potrebné vytvoriť webový formulár. Ten bude odosielaný pomocou metódy POST, jediným rozdielom od klasického formulára je, že musíme navyše nastaviť typ odosielania na multipart/form-data, inak sa súbory vôbec neprenesú. Dovnútra formulára vložíme vstupné pole input typu file, teda súbor, a odosielacie tlačidlo typu submit. Vstupné polia typu súbor vytvorí na stránke položku pre výber súboru, pri kliknutí sa zobrazí klasické známe okno pre výber súborov.
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value=" Nahrát na server " />
</form>
Potom už nasleduje PHP spracovanie. To spočíva iba v presune súboru z dočasnej pozície na určenú pozíciu. Upload soboru je teda len nahranie do dočasného priečinka. Súbory v dočasnej zložke sa však po dokončení behu skriptu aicky vymažú, preto je dôležité dané súbory presunúť na potrebné miesto.
if
(isset
($_FILES[
'file']
)) {
if
(@move_uploaded_file
($_FILES[
'file'][
'tmp_name'],
'./upload/'.
$_FILES[
'file'][
'name']
)) echo 'Uploadováno';
else echo 'Chyba při uploadu';
}
O presun súboru sa stará funkcia move_uploaded_file, kde prvý parameter určuje cestu k súboru v dočasnej zložke. Druhý parameter reprezentuje cestu, kam sa má súbor uložiť. Podľa kódu sa nahraný súbor uloží do zložky uplod, ktorá sa nachádza v rovnakom adresári ako spracúvajúci PHP skript. Názov súboru bude rovnaký, ako sa volal na počítači. Súbor možno samozrejme premenovať.
Multiple upload, nahrání více souborů naráz
Pre nahrávanie viac súborov naraz stačí existujúci skript a HTML formulár upraviť do nasledujúcej formy.
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="file[]" multiple="multiple" />
<input type="submit" value=" Nahrát na server " />
</form>
if
(isset
($_FILES[
'file']
)) {
$count=count
((array
)$_FILES[
'file'][
'tmp_name']
);
for
($i=0;
$i<
$count;
$i++
) {
if
(@move_uploaded_file
($_FILES[
'file'][
'tmp_name'][
$i],
'./upload/'.
$_FILES[
'file'][
'name'][
$i]
)) echo 'Uploadováno<br />';
else echo 'Chyba při uploadu<br />';
}
}
V HTML formulári pribudol u vstupného poľa súbor atribút multiple, ten sa stará o to, aby sme mohli vybrať viac súborov. Ďalej sa zmenil názov vstupného poľa súbor, boli pridané hranaté zátvorky na konci, čo reprezentuje dátové pole. V PHP sa následne musí zistiť počet odoslaných súborov a prejsť pole cyklom, inak sa nemení vôbec nič.