upload soubru na web
- grail
- Začátečník

-
- Registrován: 01. bře 2004
- Bydliště: Ostrava
- Kontaktovat uživatele:
upload soubru na web
Nevíte někdo náhodou jak mám provést uploadování souborů přímo z webu? Chtěl bych, aby si známí sami nahrávali např. obr. z dovolené na web přímo ze stránek. Pokud s tímto máte nějaké zkušenosti, byl bych rád, kdyby jste se mnou o ně podělili. Uvítám rady i návody. Děkuji
MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
- johny128
- Začátečník

- Registrován: 10. úno 2004
oki, takze taky lama script napr tuna
(prevziate z
napr http://www.pcsvet.cz/art/article.php?id=4871 )
na webzdarma bezi v pohode(jeden subor max. 2MB) , ale mozes skrz neho nahravat uplne cokolvek..
inac medzi take vymakanejsie galerie patri napr
http://gallery.menalto.com/
alebo uz dole zmieneny coppermine
http://coppermine.sf.net/
Kód: Vybrat vše
<html>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="soubor1"><br>
<input type="file" name="soubor2"><br>
<input type="file" name="soubor3"><br>
<input type="file" name="soubor4"><br>
<input type="file" name="soubor5"><br>
<input type="submit" value="Uložit">
</form>
<?php
if (is_uploaded_file($_FILES["soubor1"]["tmp_name"])):
$name = $_FILES["soubor1"]["name"];
copy($_FILES["soubor1"]["tmp_name"],"$name");
endif;
if (is_uploaded_file($_FILES["soubor2"]["tmp_name"])):
$name = $_FILES["soubor2"]["name"];
copy($_FILES["soubor2"]["tmp_name"], "$name");
endif;
if (is_uploaded_file($_FILES["soubor3"]["tmp_name"])):
$name = $_FILES["soubor3"]["name"];
copy($_FILES["soubor3"]["tmp_name"], "$name");
endif;
if (is_uploaded_file($_FILES["soubor4"]["tmp_name"])):
$name = $_FILES["soubor4"]["name"];
copy($_FILES["soubor4"]["tmp_name"], "$name");
endif;
if (is_uploaded_file($_FILES["soubor5"]["tmp_name"])):
$name = $_FILES["soubor5"]["name"];
copy($_FILES["soubor5"]["tmp_name"], "$name");
endif;
?>
</body>
</html>
napr http://www.pcsvet.cz/art/article.php?id=4871 )
na webzdarma bezi v pohode(jeden subor max. 2MB) , ale mozes skrz neho nahravat uplne cokolvek..
inac medzi take vymakanejsie galerie patri napr
http://gallery.menalto.com/
alebo uz dole zmieneny coppermine
http://coppermine.sf.net/
Naposledy upravil(a) johny128 dne úte 17. srp 2004, 09:24, celkem upraveno 3 x.
- pavel.minarik
- Středně pokročilý

- Registrován: 03. čer 2003
- Bydliště: Brno
- Kontaktovat uživatele:
- Banana
- Začátečník

-
- Registrován: 17. led 2004
- Lemra
- Čestný člen

- Registrován: 03. zář 2003
Ehmmm... nebudu komentovat Vaše pokusy o zkopírování funkčních nebo nefunkčních fragmentů php i jiných skriptů, nejlépe s radou, že "teraz uz len script ktory bude tie foto zobrazovat na stranke"...
Takže k původnímu dotazu:
• Upload souborů na server podle okopírovaného nefunkčního skriptu od JJ je v podstatě možné, ale kromě podpory php potřebuješ mít na daném serveru právo k zápisu do adresáře. To je na hostingu nesmysl a třeba na svým serveru si nedovedu představit, že bych zpřístupnil nějakej adresář zápisu zvenčí.
• Obvyklejší a normálnější je využít databázi - v případě PHP nejspíš MySQL. Potom ovšem potřebuješ vyřešit řadu běžných problémů - od db_connect přes autentizaci a správu až k problémům s alokovaným prostorem (obrázky jsou relativně objemný - to je na freehostingu důležitá věc).
• I zkušený vývojář v tomto případě sáhne po něčem, co už před ním vymysleli jiní - je to totiž pořád skoro totéž (viz třeba diskuzní fórum, že...). A aplikací v PHP, celkem odladěných a funkčních, který splňujou Tvoje původní požadavky, je celá řada. Ukázku využití jedné z nich najdeš pod odkazem Galerie ( http://forum.pctuning.cz/gallery/ ) - pokud je to něco, co zhruba odpovídá Tvé představě, kontaktuj Miha (Miho sorry, to je naposled...
).
Každopádně zapomeň, že Tvůj problém vyřeší jeden dvacetiřádkový skript - tahle problematika je fakt nepatrně složitější...
Takže k původnímu dotazu:
• Upload souborů na server podle okopírovaného nefunkčního skriptu od JJ je v podstatě možné, ale kromě podpory php potřebuješ mít na daném serveru právo k zápisu do adresáře. To je na hostingu nesmysl a třeba na svým serveru si nedovedu představit, že bych zpřístupnil nějakej adresář zápisu zvenčí.
• Obvyklejší a normálnější je využít databázi - v případě PHP nejspíš MySQL. Potom ovšem potřebuješ vyřešit řadu běžných problémů - od db_connect přes autentizaci a správu až k problémům s alokovaným prostorem (obrázky jsou relativně objemný - to je na freehostingu důležitá věc).
• I zkušený vývojář v tomto případě sáhne po něčem, co už před ním vymysleli jiní - je to totiž pořád skoro totéž (viz třeba diskuzní fórum, že...). A aplikací v PHP, celkem odladěných a funkčních, který splňujou Tvoje původní požadavky, je celá řada. Ukázku využití jedné z nich najdeš pod odkazem Galerie ( http://forum.pctuning.cz/gallery/ ) - pokud je to něco, co zhruba odpovídá Tvé představě, kontaktuj Miha (Miho sorry, to je naposled...
Každopádně zapomeň, že Tvůj problém vyřeší jeden dvacetiřádkový skript - tahle problematika je fakt nepatrně složitější...
..
- johny128
- Začátečník

- Registrován: 10. úno 2004
2lemra:je to "lama script" 
btw:/ sory za tu naladu, zly den
//lemra: právě že to vůbec není lama script - podobnou funkci, kterou nabízí php, by jsi v jiných jazycích musel realizovat použitím jednoúčelové komponenty... btw proč ty svoje posty pořád vylepšuješ?
btw:/ sory za tu naladu, zly den
//lemra: právě že to vůbec není lama script - podobnou funkci, kterou nabízí php, by jsi v jiných jazycích musel realizovat použitím jednoúčelové komponenty... btw proč ty svoje posty pořád vylepšuješ?
Naposledy upravil(a) johny128 dne úte 17. srp 2004, 09:25, celkem upraveno 1 x.
- grail
- Začátečník

-
- Registrován: 01. bře 2004
- Bydliště: Ostrava
- Kontaktovat uživatele:
hej hej hej,ja chtel jenom pporadit a ne,aby se z toho stala slovni bitka.
moc dekuji za vsechny rady,o ktere jste se semnou podelili.
pokud mate jeste nejake navrhy,tak budu jen rad.
moc dekuji za vsechny rady,o ktere jste se semnou podelili.
pokud mate jeste nejake navrhy,tak budu jen rad.
MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
- Shit
- Odborník PCT

- Registrován: 20. pro 2003
- Bydliště: Hradec Králové
On taky nepíše, že není (za jistých podmínek)JJ píše:no tak lemra na tej tvoj prispevok kukam jak blby ti poviem...ale skor ako sa naser.em za tie p.coviny ktore si tak hrdol napisal, dovol mi aby som ta v par bodoch opravil...script hore(ano, okopirovany) je funkcny! to je prva vec a ta druha, je funkcny tak ako na mojom kompe, tak aj na webzdarma, takze skor ako zacnes mudrovat ze si nevies predstavit ako niekto da podporu zapisu bla bla bla si to aj odskusaj, moc dakujem!
ale oki, ak tvrdis ze je nefunkcny, ja to dam prec..
P.S.: Nechceš navštívit školu slušného chování
- grail
- Začátečník

-
- Registrován: 01. bře 2004
- Bydliště: Ostrava
- Kontaktovat uživatele:
tak jsem zkusil ten skript a udelalo mi to ,co vzdycky.
nacita,nacita ,nacte a tvari se ,ze je hotovo,jenze se ten obrazek tam neni
nacita,nacita ,nacte a tvari se ,ze je hotovo,jenze se ten obrazek tam neni
MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
- Lemra
- Čestný člen

- Registrován: 03. zář 2003
OK. Původní skript od JJ vypadá takhle (taky nevím, proč ho smazal
):
Dovolím si ho zjednodušit na jeden uploadovaný soubor a nepatrně rozpitvat. Takže tentýž redukovaný kód:
• HTML form je jasnej, takže k php skriptu:
• skript předpokládá, že v php.ini souboru serveru je jako defaultní adresář pro koš definován /tmp (řádek upload_tmp_dir). Dále předpokládá, že je v php.ini povoleno ukládání souborů na server. Pokud je tato funkce v php povolena, bývá definována i maximální velikost souboru - skript opět nijak neřeší.
• skript ukládá proměnnou $name do pole $_FILES - ovšem funkce tohoto pole je podporována až od verze jazyka PHP4. Použití této verze není pravidlem (třeba www.ic.cz ). V tomto případě je potřeba využít funkci pole podporovaného nižšími verzemi, tedy $HTTP_POST_FILES se stejnou syntaxí.
• na serveru bude nutný adresář, do kterého bude soubor nahrán. Poskytovatel hostingu Ti dává jedinou možnost - využít přiděleného omezeného prostoru v rámci webové prezentace. Ovšem skript obsahuje chybu - neřeší vytvoření adresáře, čili soubory nebudou kam nahrát. Cesta, zadaná jako parametr příkazu copy, odkazuje na root a obsahuje syntaktickou chybu, která může, ale nemusí (podle nastavení serveru) být správně interpretována a soubory do rootu uploadovat.
• protože jde o jednorázovou operaci, lze vytvoření adresáře řešit místo dynamickým generováním vytvořením adresáře třeba přes FTP. V tomto případě je třeba toto zohlednit v parametru příkazu copy a současně ošetřit situaci, kdy dojde k uploadu souboru, který již v adresáři existuje - soubor se stejným názvem jinak bude bez upozornění přepsán.
• není vyřešeno ošetření vstupních polí - zejména velikost a typ souboru. Upload exe souboru a jeho následný pokus o stažení může u špatně konfigurovaného serveru způsobit jeho spuštění se všemi důsledky. Lze vyřešit přímo v php, případně lépe ošetřit formulářová pole javascriptem tak, aby byl uživatel upozorněn na špatný input ještě před provedením rutiny post.
• v původním skriptu je implicitně nabídnuta možnost uploadu pěti souborů najednou. V případě rychlé linky s tím nebude problém, v případě modemu ano - u velkých souborů dojde po určité době, dané nastavením serveru pro maximální dobu běhu skriptu, k přerušení komunikace.
Znovu doporučuji pro upload fotek na server využít databázi, a to nejlépe tak, že využiješ již existujících free php aplikací (třeba zmiňovaná galerie tady na pct, info a download najdeš na http://coppermine.sourceforge.net/ ), s konfigurací Ti (rád
) poradí Miho...
Pokud chceš využít okopírovaný skript od JJ, musíš udělat následující:
• ověřit si, zda daný hosting podporuje PHP4, upload souborů na server a jeho adresář pro koš je /tmp - v případě wz.cz tohle platí, ale není to univerzální.
• vytvořit adresář pro uploadované soubory - třeba v rootu svého webového prostoru adresář fotky.
• opravit parametr funkce copy tak, aby odkazovala na vytvořený adresář - tedy v případě adresáře fotky v rootu takhle
• musíš si být vědom všech rizik - viz výše, zejména upozorním na možné překročení diskové kvóty přidělené správcem hostingu a problémů s velikostí a typem souborů.
Kód: Vybrat vše
<html>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="soubor1"><br>
<input type="file" name="soubor2"><br>
<input type="file" name="soubor3"><br>
<input type="file" name="soubor4"><br>
<input type="file" name="soubor5"><br>
<input type="submit" value="Uložit">
</form>
<?php
if (is_uploaded_file($_FILES["soubor1"]["tmp_name"])):
$name = $_FILES["soubor1"]["name"];
copy($_FILES["soubor1"]["tmp_name"],"$name");
endif;
if (is_uploaded_file($_FILES["soubor2"]["tmp_name"])):
$name = $_FILES["soubor2"]["name"];
copy($_FILES["soubor2"]["tmp_name"], "$name");
endif;
if (is_uploaded_file($_FILES["soubor3"]["tmp_name"])):
$name = $_FILES["soubor3"]["name"];
copy($_FILES["soubor3"]["tmp_name"], "$name");
endif;
if (is_uploaded_file($_FILES["soubor4"]["tmp_name"])):
$name = $_FILES["soubor4"]["name"];
copy($_FILES["soubor4"]["tmp_name"], "$name");
endif;
if (is_uploaded_file($_FILES["soubor5"]["tmp_name"])):
$name = $_FILES["soubor5"]["name"];
copy($_FILES["soubor5"]["tmp_name"], "$name");
endif;
?>
</body>
</html>
Kód: Vybrat vše
<html>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="soubor1"><br>
<input type="submit" value="Uložit">
</form>
<?php
if (is_uploaded_file($_FILES["soubor1"]["tmp_name"])):
$name = $_FILES["soubor1"]["name"];
copy($_FILES["soubor1"]["tmp_name"],"$name");
endif;
?>
</body>
</html>
• skript předpokládá, že v php.ini souboru serveru je jako defaultní adresář pro koš definován /tmp (řádek upload_tmp_dir). Dále předpokládá, že je v php.ini povoleno ukládání souborů na server. Pokud je tato funkce v php povolena, bývá definována i maximální velikost souboru - skript opět nijak neřeší.
• skript ukládá proměnnou $name do pole $_FILES - ovšem funkce tohoto pole je podporována až od verze jazyka PHP4. Použití této verze není pravidlem (třeba www.ic.cz ). V tomto případě je potřeba využít funkci pole podporovaného nižšími verzemi, tedy $HTTP_POST_FILES se stejnou syntaxí.
• na serveru bude nutný adresář, do kterého bude soubor nahrán. Poskytovatel hostingu Ti dává jedinou možnost - využít přiděleného omezeného prostoru v rámci webové prezentace. Ovšem skript obsahuje chybu - neřeší vytvoření adresáře, čili soubory nebudou kam nahrát. Cesta, zadaná jako parametr příkazu copy, odkazuje na root a obsahuje syntaktickou chybu, která může, ale nemusí (podle nastavení serveru) být správně interpretována a soubory do rootu uploadovat.
• protože jde o jednorázovou operaci, lze vytvoření adresáře řešit místo dynamickým generováním vytvořením adresáře třeba přes FTP. V tomto případě je třeba toto zohlednit v parametru příkazu copy a současně ošetřit situaci, kdy dojde k uploadu souboru, který již v adresáři existuje - soubor se stejným názvem jinak bude bez upozornění přepsán.
• není vyřešeno ošetření vstupních polí - zejména velikost a typ souboru. Upload exe souboru a jeho následný pokus o stažení může u špatně konfigurovaného serveru způsobit jeho spuštění se všemi důsledky. Lze vyřešit přímo v php, případně lépe ošetřit formulářová pole javascriptem tak, aby byl uživatel upozorněn na špatný input ještě před provedením rutiny post.
• v původním skriptu je implicitně nabídnuta možnost uploadu pěti souborů najednou. V případě rychlé linky s tím nebude problém, v případě modemu ano - u velkých souborů dojde po určité době, dané nastavením serveru pro maximální dobu běhu skriptu, k přerušení komunikace.
Znovu doporučuji pro upload fotek na server využít databázi, a to nejlépe tak, že využiješ již existujících free php aplikací (třeba zmiňovaná galerie tady na pct, info a download najdeš na http://coppermine.sourceforge.net/ ), s konfigurací Ti (rád
Pokud chceš využít okopírovaný skript od JJ, musíš udělat následující:
• ověřit si, zda daný hosting podporuje PHP4, upload souborů na server a jeho adresář pro koš je /tmp - v případě wz.cz tohle platí, ale není to univerzální.
• vytvořit adresář pro uploadované soubory - třeba v rootu svého webového prostoru adresář fotky.
• opravit parametr funkce copy tak, aby odkazovala na vytvořený adresář - tedy v případě adresáře fotky v rootu takhle
Kód: Vybrat vše
copy($_FILES["soubor1"]["tmp_name"],"./fotky/$name")..
- Banana
- Začátečník

-
- Registrován: 17. led 2004
tak já ten script bohužel nemůžu najít...jinak souhlasím s Lemrou...ten script od JJ bych nepoužíval...
jinak taky VELMI zajímavě vypadá gallery creation na stránce - http://wnailer.vddh.com/
ten obrázek v demu- ATi get in the game ...je ode mne
jinak taky VELMI zajímavě vypadá gallery creation na stránce - http://wnailer.vddh.com/
ten obrázek v demu- ATi get in the game ...je ode mne
- grail
- Začátečník

-
- Registrován: 01. bře 2004
- Bydliště: Ostrava
- Kontaktovat uživatele:
zkusil sem vase skripty,ale nekde delam zakladni chybu.
kdyz spustim odkaz na stranku s upload-em nenacte se mi a napise se mi
Parse error: parse error in /"absolutni cesta k webu"/fotky.php on line 11.
mam stranky na euweb coz je server webzdarma
kdyz spustim odkaz na stranku s upload-em nenacte se mi a napise se mi
Parse error: parse error in /"absolutni cesta k webu"/fotky.php on line 11.
mam stranky na euweb coz je server webzdarma
MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
- Lemra
- Čestný člen

- Registrován: 03. zář 2003
- grail
- Začátečník

-
- Registrován: 01. bře 2004
- Bydliště: Ostrava
- Kontaktovat uživatele:
Kód: Vybrat vše
<html>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="soubor1" size="20"><BR>
<input type="submit" value="Uložit">
</form>
<?php
if (is_uploaded_file($_FILES["soubor1"]["tmp_name"])):
$name = $_FILES["soubor1"]["name"];
copy($_FILES["soubor1"]["tmp_name"],"./fotky/$name");
endif;
?>
</body>
</html>MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
- Lemra
- Čestný člen

- Registrován: 03. zář 2003
- grail
- Začátečník

-
- Registrován: 01. bře 2004
- Bydliště: Ostrava
- Kontaktovat uživatele:
měl jsi pravdu,za každým řádkem jsem měl ještě 2 až 3 mezery.
po jejich smazání to funguje.
moc všem děkuju,za pomoc při řešení tohoto problému a speciálně lemře za podrobný popis.
po jejich smazání to funguje.
moc všem děkuju,za pomoc při řešení tohoto problému a speciálně lemře za podrobný popis.
MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
- grail
- Začátečník

-
- Registrován: 01. bře 2004
- Bydliště: Ostrava
- Kontaktovat uživatele:
ještě malý problém, když adresář fotky uložím do jiného adresáře, tak mi to už nefunguje. chci se jenom zeptat, jestli někde nedělám chybu.
chyba je zase v tomto řádku, ale nevím kde.
Kód: Vybrat vše
copy($_FILES["soubor1"]["tmp_name"],"./upload/fotky/$name");MB: Abit NF7(-S) v2.0 CPU: AMD Athlon XP-A (Barton) 2500+@3200+ (200 x 11) 2200 MHz RAM: 2x 256MB PC 3200 (200MHz) DDR SDRAM VGA: MSI (NVIDIA GeForce 6200) 128MB HDD: Maxtor 6Y080P0 (80GB,7200ot/min) CD-RW: TEAC CD-W540E (48/12/40)
- Lemra
- Čestný člen

- Registrován: 03. zář 2003
- Banana
- Začátečník

-
- Registrován: 17. led 2004
tento script opravdu radši nepoužívej byla by jen otázka času než by ti stránky někdo podělal...zkus třeba tohle-
http://home.halden.net/harlem/hd/index.php?side=demo
jeto hodně jednoduchý script, dá se lehce upravit podle tvé potřeby
http://home.halden.net/harlem/hd/index.php?side=demo
jeto hodně jednoduchý script, dá se lehce upravit podle tvé potřeby