Autor | Zpráva | ||
---|---|---|---|
dragon7 Profil * |
#1 · Zasláno: 27. 1. 2009, 19:26:16
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 |
#2 · Zasláno: 27. 1. 2009, 19:53:48
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 * |
#3 · Zasláno: 27. 1. 2009, 19:54:22
Ahoj nejsem moc dobry programator vlastne s tym ted zacinam ale namnozil bych tam tooto
<input type="file" name="file"> |
||
SwimX Profil |
#4 · Zasláno: 27. 1. 2009, 19:57:27
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 * |
#5 · Zasláno: 27. 1. 2009, 20:00:13
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 |
#6 · Zasláno: 27. 1. 2009, 20:05:25
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 * |
#7 · Zasláno: 27. 1. 2009, 20:14:08
no tačilo by jen si udělat něco rozklikavaci input..tak např. seznam
|
||
dragon7 Profil * |
#8 · Zasláno: 27. 1. 2009, 21:18:38
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 |
#9 · Zasláno: 27. 1. 2009, 21:56:33
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 * |
#10 · Zasláno: 27. 1. 2009, 22:12:48
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 |
#11 · Zasláno: 27. 1. 2009, 22:39:24
ne, to se dava do radku.. proste jako kdyz nahrajes vic souboru zejo... tak proste INSERT provedes nekolikrat...
|
||
dragon7 Profil * |
#12 · Zasláno: 28. 1. 2009, 09:50:20
Ted nevim jestli jsme si dobre rozumneli. Ja bych to chtel mit ulozene v jednom radku, pod jednim ID. Jestli to jde?
|
||
Joker Profil |
#13 · Zasláno: 28. 1. 2009, 10:07:30
dragon7
Více souborů v jednom řádku pod jedním ID? Pročpak? Podle mě to není dobrý nápad. |
||
dragon7 Profil * |
#14 · Zasláno: 28. 1. 2009, 10:32:32
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 * |
#15 · Zasláno: 28. 1. 2009, 10:47:17
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 * |
#16 · Zasláno: 28. 1. 2009, 10:53:08
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 |
#17 · Zasláno: 28. 1. 2009, 10:55:53
Možná proto, protože doopravdy neexistuje.
|
||
dragon7 Profil * |
#18 · Zasláno: 28. 1. 2009, 11:02:07
A jak to tedy mam provezt nevis zkusil jsem misto
foreach($_FILES['file'] as $uploadovany_soubor) foreach ( $_FILES['file']['name'] as $uploadovany_soubor ) to pak sice nehlasi chybu ale stejne mi to neulozi ani jeden soubor |
||
Časová prodleva: 2 měsíce
|
|||
Mike78 Profil * |
#19 · Zasláno: 26. 3. 2009, 08:31:36
Nemelo by tam byt tmp_name misto name? Takhle pojdle me nevi co uploudovat
|
||
Časová prodleva: 15 let
|
0