Zdravim vsechny,
Chtel jsem se zeptat jestli nekdo nevi jakym zpusobem udelat do galerie tzv. hromadne nahrani obrazku. Jde mi o to ze uzivatel ktery je ke galerii prihlaseny muze vlozit neomezeny pocet obrazku do adresare a pri vkladani se pro kazdy obrazek vytvori jeden zaznam v databazi tak aby pozdeji tento clovek mohl jiz jednotlivymi obrazky prochzet a menit jejich dalsi prvky jako popis apod.
Vim jak udelat to aby nahraval kazdy obrazek zvlast ale s tim hromadnym nahravanim si nevim rady dekuji predem za zaudou radu.
Petr
Je to podobne jako s jednim souborem. Tady se inspiruj:
<FORM name="upload" ACTION="/main.php?stranka=upload/upload.php" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE='file' name='UploadSoubor1' id='UploadSoubor1' SIZE='50'><br>
<INPUT TYPE='file' name='UploadSoubor2' id='UploadSoubor2' SIZE='50'><br>
<INPUT TYPE='file' name='UploadSoubor3' id='UploadSoubor3' SIZE='50'><br>
<INPUT TYPE="submit" CLASS="tlacitko" NAME="Odeslat" VALUE="Přidat soubory">
</FORM>
http://www.programujte.com/view.php?cisloclanku=2005061503
jo.. a takhle muzes nahrat max 2MB..
j-p: zalezi na nastaveni serveru.
samozrejme sem predpokladal ze to dava na webzdarma.. :[ ale pravdu dis.
http://mirrors.inway.cz/manual/cs/features.file-upload.multiple.php
je to tam docela pekne popsany...
<HTML>Ten priklad co napsal zbi mi prijde jako prace designera ne jako programatora..
programator samozrejme nevytvari X promennych ale vytvori jednu jako pole..
soubor1: input name="soubory[]"
soubor2: input name="soubory[]"
soubor3: input name="soubory[]"
atd..
do scriptu se ti odesle 1 promenna ktera obsahuje pole souboru</HTML>
Richard:
Ten skript je funkční, i když zcela jistě lze optimalizovat. Myslím, že jako příklad na ukázku řešení zcela odpovídá na vznesený odkaz.
Našel jsem ho na:
http://www.chodec007.wz.cz/main.php?stranka=upload/upload.php
Na URL které napsal zbi jako první (http://www.programujte.com/view.php?cisloclanku=2005061503) je taková menší nepřesnost, která může být docela zásadní (nefunkčnost skriptu a v případě začátečníků pochycení špatných návyků).
Cituji:
"Určitě není potřeba tento kód komentovat, jen si myslím, že stojí za zmínku tyto proměnné, které vzniknou automaticky po uploadu souboru.
$soubor_name obsahuje název původního souboru.
$soubor_size obsahuje velikost souboru.
$soubor_type obsahuje typ původního souboru."
To nemusí platit vždycky, záleží na nastavení serveru.
Nevie mi prosim niekto z vás poradiť ako na upload adresára? Ak potrebujem umiestniť na web väčší počet súborov je zložité a zdĺhavé uploadovať ich po jednom na server. Ďalšou možnosťou by bolo zazipovať tento adresár a na strane servera ich pomocou PHP rozbaliť. Aké PHP funkcie na to slúžia, je potrebná nejaká extenzia a konfigur. direktívy v php.ini?
Nevím, jestli jsem správně pochopil, ale jestli chceš jen nahrát ručně soubory, použij nějakého ftp klienta.
chcel by som napr. rozsiahlu fotogalériu (stovky fotiek) , pričom by som info o ich názvoch a umiestnení ukladal do MySQL db. Bolo by samozrejme možné pridať časom Ďalšie fotogalérie, pričom každá by mala fotky vo vlastnom adresári, takže nejde len čisto o upload týchto adresárov, ale aj o úpravu záznamov v db tabuľke - z tohto dôvodu nemôžem použiť ftp napr. cez Total Comander.
jde to i s FTP. Ja mam svoji vlastni fotogalerii, do db ukladam zaznamy o fotkach. Do specialni slozky uploaduju pres FTP ty soubory a oni se mi pak jednim skriptem zpracuji (presunou, prejmenujou a zaregistruje v db) tak, jako bych je tam hazel po sobe formularem. Jednotlive galerie mam reseny podadresarema.
Využívaš pritom nejaké funkcie FTP v PHP? Ak ano môžeš napísať alebo poslať nejakú ukážku na e-mail?
ne, normalne to hodim na FTP do adresare (treba "nove-fotky") do podadresaru tak, jak chci, aby se jmenovaly galerie. Tohle by mel bejt skript, kterej to zpracuje. Musis nastavit spravna prava adresarum. Tabulky v databazi si uz odvodis.
<pre><?php
mysql_connect("mysql","mysql1","mojeheslo");
@mysql_select_db("mysql1");
function new_id(){ // vraci nove unikatni ID pro db fotek
$selq = mysql_query("SELECT MAX(id) FROM fotky");
$id = mysql_result($selq,0,0)+1;
return $id;
}
function registrovat_soubor($id,$galerie_id, $user_id){ // vrati uspech/neuspech
$result = mysql_query("INSERT
INTO fotky
VALUES ('$id','','image[$id]','$galerie_id','$user_id')");
return $result;
}
function registrovat_galerii($jmeno) { // vrati ID vytvorene galerie
$result = mysql_query("INSERT
INTO fotogalerie
VALUES (NULL,'$jmeno',UNIX_TIMESTAMP(),'24',UNIX_TIMESTAMP())");
$last_id = mysql_insert_id();
return $last_id;
}
function presun($filename,$adresar_z,$adresar_do,$id) {
$ret = copy($adresar_z.$filename, $adresar_do."image[$id].jpg");
return $ret;
}
function seznam_podadr($adr) { // musi koncit lomitkem
$handle = opendir($adr);
while (false!==($file = readdir($handle)))
{
if (substr($file,0,1)!=".")
{
$path = $adr . $file;
if(is_dir($path)) $res[] = $file."/";
}
}
closedir($handle);
return $res;
}
function seznam_souboru($adr) { // musi koncit lomitkem
$handle = opendir($adr);
while (false!==($file = readdir($handle)))
{
$path = $adr . $file;
if(!is_dir($path)) $res[] = $file;
}
closedir($handle);
return $res;
}
// momentalni umisteni skriptu: doc_root/www/NF.php
// NASTAVENI ADRESARU A USER-ID
$upload_dir = "fotky-nove/";
$target_dir = "fotky/";
$uid = "24"; // user id
echo "nacitam seznam galerii...";
$adresar = seznam_podadr($upload_dir);
echo "hotovo.\n";
echo "nalezeno galerii: ";
$pocetg=sizeof($adresar);
echo "$pocetg\n\n";
for ($i=0;$i<$pocetg;$i++) {
echo "Zpracovavam galerii ".($i+1)."/$pocetg ....\n";
echo " Registruji galerii $adresar[$i]....";
$galid = registrovat_galerii($adresar[$i]);
if (!$galid) {echo "galerie nebyla registrovana!\n".mysql_error()."\n"; continue;}
echo "ok\n";
echo " Pocet souboru v galerii: ";
$soubor = seznam_souboru($upload_dir.$adresar[$i]);
$pocets = sizeof($soubor);
echo "$pocets\n";
for ($s=0;$s<$pocets;$s++){
echo " zpracovavam soubor $soubor[$s]...";
$id = new_id();
if (!$id) {echo "nebylo prideleno ID!\n"; continue;}
$mov = presun($soubor[$s],$upload_dir.$adresar[$i],$target_dir,$id);
if (!$mov) {echo "soubor nebyl presunut!\n"; continue;}
$rgf = registrovat_soubor($id,$galid,$uid);
if (!$rgf) {echo "soubor nebyl registrovan!\n".mysql_error()."\n"; continue;}
echo "ok\n";
}
}
?></pre>