Autor Zpráva
strafnik
Profil
Ahoj, formulářový prvek
<input type="file" name="jmeno_souboru" size="18">
vrací celou cestu, když však provedu
$jmeno_souboru=$_POST["jmeno_souboru"];
je cesta oříznuta a zbyde jen jméno souboru. Potřebuji ale dostat celou cestu a uložit ji do databáze. Celý problém možná je v tom, že to je vlastnost formulářového prvku, možná nedovolí uchovat cestu. Nebo mám něco špatně nastaveno v PHP na serveru?
Jak mohu jinak dosáhnout téhož aniž bych musel ručně naťukat cestu do pole
<input type="text" name="jmeno_souboru" size="35">
?
Děkuji
Jack Finger
Profil
K nahranému souboru se přistupuje přes asociativní pole $_FILES, takže $_FILES['tmp_name'], $_FILES['name'], $_FILES['size'], $_FILES['type'].
strafnik
Profil
Ale já nechci přesouvat ten vybraný soubor pomocí formulářového prvku. Chci získat jen cestu. Zhruba před měsícem po nějakém update (windows) mi to přestalo fungovat a vrací jen jméno souboru bez cesty. Pokud jsem nepochopil co míníš, prosím uveď souvislejší kód abych tomu lépe porozuměl. Díky.
blaaablaaa
Profil *
strafnik: odesilani cele cesty by bylo celkem poruseni soukromi, proto prohlizece odesilaji jen jmeno...
strafnik
Profil
Dobře, soukromí beru, ale jak z toho ven? Podotýkám, že jde o lokální síť (domácí)
Mastodont
Profil
Jestli je v tom prvku před odesláním opravdu celá cesta, tak přes JS zkopírovat do nějakého hidden inputu a pak odeslat?
strafnik
Profil
Zkoušel jsem testovat tento kód, ale nevede to nikam, možná je chybný?
<script type="text/javascript"> 
function x(cesta){ 
document.f.cesta.value=cesta;
return true; 
} 
</script> 


<h3>Zadání souboru</h3>

<form name=f method="get" onSubmit="return x(soubor.value);">
	<p><input type="file" name="soubor"></p>
<p>                 <input type="text" name="cesta"></p>
         <input type=submit value=odeslat>

</form>
bohyn
Profil
Jestli je tam ulozena cesta nevim, ale zkus tohle:
function getPath(obj) {
  obj.cesta.value = obj.soubor.value
  return true;
}

<form method="post" enctype="multipart/form-data" onsubmit="return getPath(this);">
  <input type="file" name="soubor">
  <input type="hidden" name="cesta">
  <input type=submit value=odeslat>
</form>
Jack Finger
Profil
strafnik, bohyn
Formulářový prvek <input type="file"> nepovoluje ani číst cestu, ani psát cestu (atribut value="") (ani měnit popisek tlačítka Procházet).

//Edit: teda aspoň mám ten pocit, přece by se jednalo o porušení soukromí, ne?
bohyn
Profil
Jack Finger
Treba FF ti dovoli precist cely soubor nebo zjistit velikost :)
Souhlasim ze value se menit neda, ale v IE kdyz das hodnotu inputu do <img scr="..."> tak se obrazek zobrazi (pokud je v inputu obrazek) takze k ceste te asi pusti. Prohlizece proste predpokladaji ze co vlozis do inputu tak chces uploadovat.
strafnik
Profil
Pánové, díky za vstřícnost, zdá se že to prostě nemá řešení :( bohužel to prostě vrací jen jméno souboru bez cesty, takže odkazy na hudební soubory v síťovém úložišti prostě nedostanu do databáze pro následné zobrazení ve výpisu z databáze jako spustitelný odkaz hudebního souboru do přehrávače.... ach jo.
strafnik
Profil
Není nějaká možnost jak metodami php simulovat výběrové tlačítko přesněji řečeno dialogový panel v kterém si tu cestu naklikám a uložím do proměnné? Nalezl jsem na netu php kódy pro procházení adresářů, ale je to vždy založeno na tom, že skript je umístěn v rootu webu. Já potřebuji aby uměl "zabrousit i na síťové úložiště DLINK DNS-323
imploder
Profil
strafnik
Dobře, soukromí beru, ale jak z toho ven? Podotýkám, že jde o lokální síť (domácí)
1. nechat si vypsat všechny cesty do textového souboru (něco se na to najde)
2. soubor s cestami uploadovat zmíněným formulářem
3. skript, který ho převezme, ty cesty pak nastrká do databáze
bohyn
Profil
strafnik
Pres FTP, nebo root webu presun na DLINK
strafnik
Profil
Ano to zní jako návod pro zkušeného programátora....... to bohužel nejsem, nejsem ani nezkušený programátor, jsem naprostý laik :( alespoň ukázka kódů?
imploder
Profil
To co, jsem napsal já, by snad zvládl i lamácký programátor :)

V linuxu je příkaz tree - tím se dá vytvořit zmíněný soubor s cestami. Skript, co zapisuje cesty do databáze, už máš. Stačí ho jenom upravit, aby je nečetl z formulářového políčka, ale všechny najednou z toho souboru.
strafnik
Profil
nemám linux.....
imploder
Profil
Pod Windows nevím, Total Commander sice umí vypisovat jakýsi strom, ale zřejmě ho neumí vypsat do txt souboru.

Vyrobil jsem na to prográmek v Baltíkovi. Nejdřív je potřeba (pokud to teda nemáš už nainstalované) stáhnout a naistalovat runtime: http://www.sgp.cz/download/csy/b3_ilr_runtime.exe
- asi 1,1 MB, bez problémů. Tady je pak samotný prográmek: http://bprhad.wz.cz/strom.BPR
Dáš ten strom.bpr do nejhornějšího adresáře, spustíš, a on do zadaného souboru vypíše na řádky všechny cesty k souborům ve svém adresáři a všech zanořených.

Baltík je podobně jako PHP interpretovaný jazyk a je hodně pomalý, tak snad to nepotrvá moc dlouho.
strafnik
Profil
php řešení neexistuje?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0