Autor Zpráva
dragon7
Profil *
Ahoj uplouduji takto soubory:
<input type="file" name="file"></td>

$uploaddir = '../obr/'; // Relative path under webroot
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
/*získání jména souboru*/
$name = $_FILES['file']['name'];

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
echo "Soubor byl úspěšně nahrán.\n<br>";
}
else {
echo "File uploading failed.\n<br>;
}
Ale chtel bych nahravat vice souboru jak bych mel sript pozmenit?
AM_
Profil
Přidáš si víc inputů (každý s jiným jménem, nebo můžeš použít pole, tj name="file[]"). v PHP je pak projdeš nějakým cyklem a provedeš se všemi nahranými soubory to, co jsi doteď dělal s jedním (to pole pak je myslím ve tvaru $_FILES['file'][$poradi]['name'] atd...). Chybí ti tam ochrana, když ti tam někdo nahraje soubor s příponou .PHP (nebo jinou, která se může spustit), tak ho bez problému spustí a může ti udělat na webu paseku. Pokud to nemáš ošetřené jinak, měl bys kontrolovat příponu souboru (pokud nahráváš jen obrázky, tak ji např. porovnat na možné přípony obrázků).
nhgf
Profil *
Ahoj nejsem moc dobry programator vlastne s tym ted zacinam ale namnozil bych tam tooto
<input type="file" name="file"> 
SwimX
Profil
AM_
nhgf
a když uživatel bude chtít nahrát víc souborů než je inputů? Tak mu přidáme další ne? :))
Php umí pracovat se zipem - http://php.vrana.cz/ziskani-souboru-ze-zip-archivu.php
radas
Profil *
zip ? co když to budou fotku do galerie???
pracuj s tím jako spolem...
<input type="file" name="file[]">

pak dej for spočítej si je, proveď ukon a máš vyřešeno..
SwimX
Profil
radas
zip ? co když to budou fotku do galerie???
Tak si je phpko na servru rozziupuje a nahraje do požadovaného adresáře.

pracuj s tím jako spolem...
By mě kleplo, kdybych měl nahrávat 30 fotek do galerie po jedný (kdybych měl 30x kliknout na výběr fotky)
radas
Profil *
no tačilo by jen si udělat něco rozklikavaci input..tak např. seznam
dragon7
Profil *
Mohl by mi jeste nekdo pomoci s tim cyklem kdyz tedy budu mit toto pole a dejme tomu tri Inputy:

<input type="file" name="file[]">
<input type="file" name="file[]">
<input type="file" name="file[]">

Jak by pak melo vypadat to odeslani aby slo vyplnit budto jeden soubor a nebo vsechny tri.
Diky
AM_
Profil
Vyplnit jich můžeš, kolik chceš (a i které chceš).
Můžeš s tím pracovat i takhle:
foreach($_FILES['file'] as $uploadovany_soubor){
  if (is_uploaded_file($uploadovany_soubor['tmp_name']) {
    $uploaddir = '../obr/'; // Relative path under webroot 
    $uploadfile = $uploaddir . $uploadovany_soubor['name'];  //funkce basename je zbytečná, při uploadu se nepředává cesta
    /*získání jména souboru*/ 
    $name = $uploadovany_soubor['name']; 
    //ochrana proti souborum nezadouciho typu
    $pripona = explode(".", $name);
    $pripona = $pripona[count($pripona)-1]; //text za posledni teckou v nazvu souboru = pripona
    if (!in_array($pripona, array("jpg", "jpeg", "gif", "png"))){ //seznam povolenych pripon si dopln dle libosti
       echo "nepovolena pripona, lze nahrat jen jpg, jpeg, gif, png<br>";
       continue;
    }
    if (move_uploaded_file($uploadovany_soubor['tmp_name'], $uploadfile)) { 
    echo "Soubor byl úspěšně nahrán.\n<br>"; 
    } 
    else { 
    echo "File uploading failed.\n<br>; }
    //zajímavé, předpokládáš, že úspěšné nahrání provede čech, ale anglicky mluvícím lidem se to nebude dařit?
  }
}
?>
dragon7
Profil *
Ok diky moc pujdu to vyzkouset. A jeste jedna malickost, jak to ulozim do databaze(tabulky) ted jsem to mel ze jsem ulozil do sloupce name v tabulce hodnotu $name, ale jak to udelam ted kdyz jich bude nekolik?
To si musim vytvorit v tabulce tolik sloupcu kolik budu mit souboru a jak pak ktery kam priradim?
AM_
Profil
ne, to se dava do radku.. proste jako kdyz nahrajes vic souboru zejo... tak proste INSERT provedes nekolikrat...
dragon7
Profil *
Ted nevim jestli jsme si dobre rozumneli. Ja bych to chtel mit ulozene v jednom radku, pod jednim ID. Jestli to jde?
Joker
Profil
dragon7
Více souborů v jednom řádku pod jedním ID? Pročpak? Podle mě to není dobrý nápad.
dragon7
Profil *
No ja bych to chtel mit jako ze mam vyrobek s hlavnim obrazkem, a pak k nemu dalsi obrazky pokud je uzivatle vlozi. Tak bych chtel aby k tomu vyrobku byli nejak pridruzeny a dobre se mi to zobrazovalo. Nebo jak bych to mel resit?
dragon7
Profil *
Jeste se vratim k tomu scriptu od AM_ , tak ten mi hned na zacatku hlasi u prvni slozene zavorky foreach($_FILES['file'] as $uploadovany_soubor) {

Parse error: syntax error, unexpected '{' in C:\dev\www\888\admin\zadej_sortiment.php on line 67

Nema to byt nejak jinak?
dragon7
Profil *
Zavorku beru zpet chybela tam jina...
Ale dalsi chyba je u:
if (is_uploaded_file($uploadovany_soubor['tmp_name']))

Notice: Undefined index: tmp_name in C:\dev\www\888\admin\zadej.php on line 66

Jak to ze ho nezna?
Měsíček
Profil
Možná proto, protože doopravdy neexistuje.
dragon7
Profil *
A jak to tedy mam provezt nevis zkusil jsem misto
foreach($_FILES['file'] as $uploadovany_soubor)
toto:
foreach ( $_FILES['file']['name'] as $uploadovany_soubor )

to pak sice nehlasi chybu ale stejne mi to neulozi ani jeden soubor
Mike78
Profil *
Nemelo by tam byt tmp_name misto name? Takhle pojdle me nevi co uploudovat

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: