Autor Zpráva
DC19
Profil *
Dobrý večer,

zkouším jednoduché nahrání obrázků na FTP pomocí move_uploaded_file. Provede se mi uložení do DB dle specifikací mnou nastavených, ale obrázek se do cílové cesty nenahraje. Složka má nastaveno 777.

        if(isset($_POST['zapsat'])){

            $a = $_POST['a'];
            $b = $_POST['b'];
            $c= $_POST['c'];
            $obrazek = $_POST['obrazek'];
            $imgfile = $_POST['imgfile'];

            $obr_temp  = $_FILES['obrazek']['tmp_name'];

            $obrazek="".$imgfile.".jpg";

            move_uploaded_file($obr_temp, "/www/img/$obrazek");

        mysql_query("INSERT INTO nejakatabulka (a,b,c,obrazek) VALUES ('$a','$b','$c','$obrazek')");    
        }

imgfile slouží jako vlastní název obrázku, který přeuloží daný název obrázku nahrávaného viz

<input type="file" name="obrazek" /> <input type="text" name="imgfile" value="vlastni-jmeno-obrazku" /> .jpg

V této podobě se a,b,c i přeuložení názvu provedou a do DB se vše uloží jak má, ale na FTP do složky img nic nedocestuje ://
- kód sem osekal na minimum a vypustil pro mě v tuto chvíli nepodstatné (file-type, file-size atd..)
- možná je to hrozná slátanina, takže jsem již předem vděčný za všechny rady, tipy
- zkoušel sem i hledat v diskuzich, upravovat cestu, kod jako celek ale výstup je vždy stejný, do DB ok, na FTP nic

Moc děkuji, Lukas
Davex
Profil
Ta cílová cesta je pravděpodobně špatně, protože se bere od kořene souborového systému a ne od kořenového adresáře webu. Asi chceš nahrávat do "./www/img/$obrazek".
DC19
Profil *
Davex:
Bohužel, s tečkou, bez tečky, je to jedno. Zkoušel sem to už před položením dotazu, bez úspěchu. Nezdá se vám na tom kódu něco co by bylo do očí, že je špatně? Já už to tak osekal, že mi to příjde až moc..vlastně ani nevím..slátané. Děkuji, Lukas


ale kuš, *bilo, samozřejmě.. už je po půl noci, to snad přehlédnete :-))
juriad
Profil
Nemyslím si, že existuje adresář /www/img/. Zkontroluj pomocí is_dir, že máš cestu opravdu správně.
DC19
Profil *
juriad:
na cestu
var_dump(is_dir('./img'));
se vrátí bool(true), na www/img a ./www/img se vrátí false. Nicméně i po uprávě cesty na ./img/$obrazek se do složky stále nic nenahraje :// Lukas
Keeehi
Profil
Co říká: var_dump($_FILES['obrazek']['error']); ?
A co: var_dump(is_file($_FILES['obrazek']['tmp_name'])); ?
DC19
Profil *
Keeehi:
Pardon, všiml jsem si odpovědi až nyní. Pro první variantu odpoví NULL pro druhou bool(false).
Keeehi
Profil
To znamená, že se soubor na server vůbec nenahraje.
Vypadá formulář nějak takto?
<form action="upload.php" method="post" enctype="multipart/form-data">
DC19
Profil *
Keeehi:
enctype je totožný, ano

    
<form method="post" name="formace" enctype="multipart/form-data" action="?s=xy.php&sekce=x-y">

..mne na tom právě zaráží, že kdysi jsem podobný kód již využíval a jelo to bez problémů, proto jsem po něm sáhl znovu a jediné co nejede, je ten přenos souboru z bodu A do bodu B.

..ještě mne tak maximálně napadá, změnil sem v nastavení atributů v TCM na 777. Vadí, pokud to není 0777?


Tak vám nevím, ale teď jsem po těch pár dnech otevřel složku img, a v ní jsou nahrány fotky. No přísahal bych, že před tím, tam nebyly. Tak nevím, jestli si ze mě TCM dělá srandu.. Teď jsem zkusil jednu zkušební nahrávku, ihned po zapsání do DB sem se díval na FTP a v složce img nebyla, odpojil sem se a znovu připojil k FTP a fotka již vidět byla.

Ilumináti.

Díky všem i tak :-)
Keeehi
Profil
DC19:
U toho FTP mohla zapůsobit nějaká keš, proto to není hned vidět.

Ještě poznámka ke kódu z [#6]. Buď ty hodnoty (null a false) tam nebyly nebo jsi ten kód vložil někam jinam než do souboru v kterém máš move_uploaded_file.
DC19
Profil *
Keeehi:
Ano, měl sem je jinde, v single souboru, a vůbec mi to nepřišlo divný. Přemýšlím u toho jako jantar, božeeee :-)
Keeehi
Profil
DC19:
Já to tušil. Psal jsem to spíše proto, že kdyby to tu někdo našel, vyzkoušel a dostal stejné honoty, tak aby věděl, že to má taky nejspíše ve špatném souboru.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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