upload soubru na web

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
grail
Začátečník
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

upload soubru na web

Příspěvek od grail »

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
Začátečník
Uživatelský avatar
Registrován: 10. úno 2004

Příspěvek od johny128 »

oki, takze taky lama script napr tuna

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>

(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/
Naposledy upravil(a) johny128 dne úte 17. srp 2004, 09:24, celkem upraveno 3 x.
pavel.minarik
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 03. čer 2003
Bydliště: Brno
Kontaktovat uživatele:

Příspěvek od pavel.minarik »

to JJ: já myslím, že pochopil, to je přesně to na co se ptal

přesun do programování, tam tomu bude líp
Pavel Minarik @ Dell Latitude 7300 (bohužel moc topí, nedoporučuju)
Banana
Začátečník
Začátečník
Registrován: 17. led 2004

Příspěvek od Banana »

nemá to žádnou ochranu proti tomu aby ti tam někdo poslal vir nebo něco!!!
pokud chceš jenom obrázky tak se to dá ošetřit, ted si z hlavy nevzpomenu, jakmile ten script najdu tak ho sem dám...
Lemra
Čestný člen
Čestný člen
Uživatelský avatar
Registrován: 03. zář 2003

Příspěvek od Lemra »

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... :roll: ).

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
Začátečník
Uživatelský avatar
Registrován: 10. úno 2004

Příspěvek od johny128 »

2lemra:je to "lama script" :wink:

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
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od grail »

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.
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
Odborník PCT
Uživatelský avatar
Registrován: 20. pro 2003
Bydliště: Hradec Králové

Příspěvek od Shit »

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! :evil:

ale oki, ak tvrdis ze je nefunkcny, ja to dam prec..
On taky nepíše, že není (za jistých podmínek) :P Jenom nechápu, proč jsi to smazal :wink:
P.S.: Nechceš navštívit školu slušného chování :stupid: :devil: Ono víc věcí neplatí obecně :wink:
grail
Začátečník
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od grail »

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 :(
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
Čestný člen
Uživatelský avatar
Registrován: 03. zář 2003

Příspěvek od Lemra »

OK. Původní skript od JJ vypadá takhle (taky nevím, proč ho smazal :? ):

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>
Dovolím si ho zjednodušit na jeden uploadovaný soubor a nepatrně rozpitvat. Takže tentýž redukovaný kód:

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>
• 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 :oops: ) 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

Kód: Vybrat vše

copy($_FILES["soubor1"]["tmp_name"],"./fotky/$name")
• 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ů.
..
Banana
Začátečník
Začátečník
Registrován: 17. led 2004

Příspěvek od Banana »

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 :wink:
grail
Začátečník
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od grail »

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
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
Čestný člen
Uživatelský avatar
Registrován: 03. zář 2003

Příspěvek od Lemra »

Interpret PHP vidí na řádku 11 kódu stránky fotky.php syntaktickou chybu. Postni sem ten zdroják.
..
grail
Začátečník
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od grail »

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
Čestný člen
Uživatelský avatar
Registrován: 03. zář 2003

Příspěvek od Lemra »

Na první pohled je to O.K. Možná tam máš nějakej znak na konci řádek, kterej není vidět (enter a pod.) - zkus ty mezery za středníkama odmáznout.
..
grail
Začátečník
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od grail »

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. :-D
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
Začátečník
Registrován: 01. bře 2004
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od grail »

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.

Kód: Vybrat vše

copy($_FILES["soubor1"]["tmp_name"],"./upload/fotky/$name");
chyba je zase v tomto řádku, ale nevím kde.
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
Čestný člen
Uživatelský avatar
Registrován: 03. zář 2003

Příspěvek od Lemra »

Co třeba velikost písmen, používání mezer v názvech souborů... wz jede na linuxu :)
..
Banana
Začátečník
Začátečník
Registrován: 17. led 2004

Příspěvek od Banana »

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 :wink:
Odpovědět

Zpět na „Programování a web“