NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Nahrávání souboru s českými znaky

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
rrepin15
Člen
Avatar
rrepin15:2.12.2016 17:50

Ahoj, potřebuju nahrávat soubory na server s českou diakritikou, nevite někdo jak? Vždy mi to pojmenuje divnými znaky.

<?php
$fileName =  $_FILES["file1"]["name"];
$fileTmpLoc = $_FILES["file1"]["tmp_name"];
$fileType = $_FILES["file1"]["type"];
$fileSize = $_FILES["file1"]["size"];
$fileErrorMsg = $_FILES["file1"]["error"];

if (!$fileTmpLoc)
{
    echo "<script>alert('Chyba: Prosím, vyhledejte soubor před kliknutím na tlačítko nahrávání!'); </script>";
    exit();
}
if(move_uploaded_file($fileTmpLoc, "soubory/$fileName"))
{
    echo "<script>alert('$fileName byl nahrán.'); </script>";
}
else
{
    echo "<script>alert('Stala se chyba!'); </script>";
}
?>
 
Odpovědět
2.12.2016 17:50
Avatar
Odpovídá na rrepin15
Neaktivní uživatel:2.12.2016 19:23

Můžeš zkusit převést název souboru z utf8 do kódování systému pomocí iconv()

Nahoru Odpovědět
2.12.2016 19:23
Neaktivní uživatelský účet
Avatar
rrepin15
Člen
Avatar
Odpovídá na Neaktivní uživatel
rrepin15:2.12.2016 20:30

A kódování systému je jaké?

 
Nahoru Odpovědět
2.12.2016 20:30
Avatar
Odpovídá na rrepin15
Neaktivní uživatel:3.12.2016 2:29

No to bys měl vědět ty, nikde jsi nezmínil na jakém os ti běží server. Například u Windows záleží na jazykové verzi, MacOS má normalizované UTF a pod.

Nahoru Odpovědět
3.12.2016 2:29
Neaktivní uživatelský účet
Avatar
rrepin15
Člen
Avatar
Odpovídá na Neaktivní uživatel
rrepin15:3.12.2016 9:58

No dělám to na windowsu, ale potom to poběží na linuxu.

 
Nahoru Odpovědět
3.12.2016 9:58
Avatar
Neaktivní uživatel:3.12.2016 15:15

Asi takhle, v první řadě bych ti doporučil vykašlat se na diakritiku a naopak ze jména souboru ji odstranit, nahradit mezery za podtržítka, odstranit speciální znaky a mezery na začátku a konci názvu.

Pokud chceš setrvat u tvého řešení, tak to můžeš zkusit třeba takhle

if(move_uploaded_file($fileTmpLoc, "soubory/".iconv('UTF-8', 'WINDOWS-1250//TRANSLIT', $fileName)))
{
    echo "<script>alert('$fileName byl nahrán.'); </script>";
}
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
3.12.2016 15:15
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.