Upraveno 22 prosince, 2023 22:42
Občas je potřeba použít jednoduchý formulář pro upload souborů na FTP Vašeho webu. Zde je kompletní skript pro upload souborů v PHP s použitím funkce chmod pro změnu práv na 755 a s formulářem pro výběr souboru (práva si můžete pomocí chmod ve skriptu upravit na svá vlastní, požadovaná). Pamatujte, že maximální velikost souboru se řídí omezením nastaveným v php.ini daného webu. Budete tedy pravděpodobně limitováni velikostí souboru, obzvláště, pokud se bude jednat o sdílený webhosting. Jak tedy napsat jednoduchý skript pro upload souborů v PHP s použitím funkce chmod pro změnu práv na 755.
Skript pro upload souborů v PHP s použitím funkce chmod pro změnu práv na 755
Ve skriptu je pro upload použitá složka upload. Opět, pokud potřebujete cílovou složku upravit, upravte ji ve skriptu na Vámi požadovanou.
Tento skript je koncipovaný pro upload souboru .jpg, .jpeg a .png. Opět, lze dodatečně upravit.
File Upload
2097152) {
$errors[] = 'File size must be less than 2 MB';
}
if(empty($errors) == true) {
move_uploaded_file($file_tmp,"upload/".$file_name);
chmod("upload/".$file_name, 0755);
echo "Success";
} else {
print_r($errors);
}
}
?>
Vysvětlení
<form>
: Tato část kódu definuje formulář, kde se vybere soubor k nahrání. Atributaction
určuje cílovou stránku pro odeslání formuláře (v tomto případě je prázdný, což znamená, že data budou odeslána na stejnou stránku). Atributmethod
určuje způsob, jakým budou data odeslána na cílovou stránku (v tomto případě se použije metoda POST). Atributenctype
určuje typ kódování dat, které se budou odesílat (v tomto případě se použijemultipart/form-data
pro nahrávání souborů).<input type="file" name="file">
definuje v HTML formuláři pole pro výběr souboru z počítače uživatele. Tento typ políčka se používá pro nahrání souborů na server. Atributtype
určuje typ políčka jako „file“, což znamená, že uživatel může vybrat soubor z počítače. Atributname
definuje jméno políčka, v tomto případě „file“. Toto jméno se použije v PHP skriptu jako klíč k dosažení informací o nahraném souboru.<input type="submit" value="Upload">
: Toto je tlačítko formuláře, které umožňuje uživateli odeslat soubor na server. Atributvalue
určuje text, který bude zobrazen na tlačítku.if (isset($_FILES['file']))
: Tento blok kódu se provede, pouze když byl soubor vybrán a odeslán pomocí formuláře. Funkceisset()
vrátí true, pokud byla proměnná nastavena a není null. V tomto případě se kontroluje, zda byl soubor vybrán pomocí formuláře.$errors
: Tato proměnná slouží k uložení chyb, které se vyskytnou během kontroly souboru.$file_name = $_FILES['file']['name']
: Tato proměnná slouží k uložení názvu souboru, který byl odeslán. Proměnná$_FILES
obsahuje informace o odeslaném souboru a index'name'
obsahuje název souboru.$file_size = $_FILES['file']['size']
: Tato proměnná slouží k uložení velikosti souboru, který byl odeslán. Proměnná$_FILES
obsahuje informace o odeslaném souboru a index'size'
obsahuje velikost souboru v bytech.$file_tmp = $_FILES['file']['tmp_name']
: Tato proměnná slouží k uložení dočasného názvu souboru, který byl odeslán na server. Proměnná$_FILES
obsahuje informace o odeslaném souboru a index'tmp_name'
obsahuje dočasný název souboru na serveru.$file_type = $_FILES['file']['type']
: Tato proměnná slouží k uložení typu souboru, který byl odeslán. Proměnná$_FILES
obsahuje informace o odeslaném souboru a index'type'
obsahuje MIME typ souboru.$file_ext = strtolower(end(explode('.',$_FILES['file']['name'])))
: Tato proměnná získává příponu souboru a zmenšuje ji na malá písmena pomocí funkcestrtolower()
. Funkceexplode('.',$_FILES['file']['name'])
rozdělí název souboru na jednotlivé části podle tečky a vrátí pole. Funkceend()
získá poslední prvek z pole.$extensions = array("jpeg","jpg","png")
: Tato proměnná obsahuje seznam povolených přípon souborů.in_array($file_ext,$extensions) === false
: Tato funkce kontroluje, zda přípona souboru není v poli povolených přípon. Pokud není, do proměnné$errors
se přidá chybová zpráva.if($file_size > 2097152)
: Tato funkce kontroluje, zda velikost souboru není větší než 2 MB. Pokud ano, do proměnné$errors
se přidá chybová zpráva.empty($errors) == true
: Tato funkce kontroluje, zda proměnná$errors
je prázdná. Pokud ano, znamená to, že nebyly nalezeny žádné chyby a soubor může být nahrán.move_uploaded_file($file_tmp,"upload/".$file_name)
: Tato funkce přesune nahraný soubor z dočasné složky na server do složkyupload/
s názvem souboru$file_name
.chmod("upload/".$file_name, 0755)
: Tato funkce nastavuje práva pro soubor na 755, což umožňuje čtení, zápis a spuštění souboru vlastníkovi, ale pouze čtení ostatním uživatelům.print_r
: Tato funkce slouží k výpisu obsahu pole, v tomto případě pole$errors
. Funkceprint_r
vypíše informace o poli, jako jsou například klíče a jejich hodnoty. Pokud je pole$errors
prázdné, tak se nic nevypíše. Pokud však pole obsahuje nějakou hodnotu, tak se výpis hodnoty pole vypíše na stránce. Tyto hodnoty by měly být chybovými zprávami, které se objeví v případě, že nějaký soubor nemá povolenou příponu nebo má příliš velkou velikost.
Tento skript bude uploadovat soubory bez omezení na koncovku a bude mít maximální velikost souboru 128 MB.
U složky „Upload“ pozor na velké počáteční U. Je nutné případně upravit velikost, jelikož Linuxové servery rozlišují malá a velká písmena.
File Upload
128000000) {
$errors[] = 'File size must be less than 128 MB';
}
if(empty($errors) == true) {
move_uploaded_file($file_tmp,"upload/".$file_name);
chmod("upload/".$file_name, 0755);
echo "Success";
} else {
print_r($errors);
}
}
?>
Web je vytvářen s pečlivostí k obsaženým informacím. Snažím se poskytovat kvalitní a užitečný obsah, který ostatním pomáhá, nebo je inspiruje. Pokud jste spokojeni s mou prací a chtěli byste mě podpořit, můžete to udělat prostřednictvím jednoduchých možností.
Byl pro Vás tento článek užitečný?
Klikni na počet hvězd pro hlasování.
Průměrné hodnocení. 0 / 5. Počet hlasování: 0
Zatím nehodnoceno! Buďte první
Je mi líto, že pro Vás nebyl článek užitečný.
Jak mohu vylepšit článek?
Řekněte mi, jak jej mohu zlepšit.
Odebírejte Newsletter
Buďte v obraze! Připojte se k odběru newsletteru a buďte první, kdo získá nejnovější informace přímo do vaší e-mailové schránky. Sledujte aktuality, exkluzivní události a inspirativní obsah, přímo na Vašem e-mailu.