Autor | Zpráva | ||
---|---|---|---|
Tomas256 Profil |
#1 · Zasláno: 18. 4. 2014, 18:46:28
Zdravím,
vytvořil jsem si script na upload souboru, níže je přiložen zkrácený, potřeboval bych poradit jak vložit do tohoto scriptu gif (progress.gif), místo progress baru (není ho potřeba), který by se měl zobrazit pod inputem 'file' ve formuláři v případě že se začne soubor na server nahrávat. Byla by ho potřeba v případě kdy by soubor měl velikost od např. 20 MB do 2GB, tak aby někdo když bude na server nahrávat soubor věděl že se něco děje a nezavřel stránku či panel. Na konci, po uploadu se stránka hned přsměruje, takže není potřeba gif nějak skrývat. Zkoušel jsem hledat na googlu i tady na foru ale nenašel jsem nic co by mi vyhovovalo nebo fungovalo. Snad jsem to napsal srozumitelně. Nevíte jak by se teda toto dalo zrealizovat? díky Kód php scriptu: upload.php <?php if (!isset($_FILES['file']['name'])) { if ($_FILES['file']['size'] < 2000000000) { $name = $_FILES['file']['name']; $typ = strtolower(end(explode('.', $name))); $podpora = array(); if (in_array($typ, $podpora)) { if (is_uploaded_file($_FILES['file']['tmp_name'])) { $cesta = 'data/'.sha1($new_name.Date('Y-m-d H-m-s')).'/'; mkdir('../'.$cesta, 0700); if (move_uploaded_file($_FILES['file']['tmp_name'], '../'.$cesta.$new_name)) { /* zapis do databaze a presmerovani na jinou stranku */ } else { echo 'nastala chyba, soubor nebyl nahran!'; } } else { echo 'soubor neni podporovan!'; } } else { echo 'soubor je prilis velky!'; } } else { echo 'soubory nebyl vybran!' } } ?> <!DOCTYPE html> <head> <title>Upload souboru</title> </head> <body> <h2>Upload souboru</h2> <form name='upload' action='' method='POST' enctype='multipart/form-data'> <input id='upload_file' type='file' name='file'> <table id='upload'> <tr><td><input type='text' name='nazev' placeholder='Název souboru'></td></tr> <tr><td><textarea name='popis' placeholder='Popis souboru...'></textarea></td></tr> <tr><td><input type='submit' value='Nahrát'></td></tr> </table> </form> </body> </html> |
||
CZghost Profil |
#2 · Zasláno: 18. 4. 2014, 19:23:08
Tomas256:
Nešlo by to řešit Javascriptem? Při odeslání formuláře zobrazíš obrázek (tuším, že používáš rotující kolečko nebo něco podobného) a hotovo :) |
||
Tomas256 Profil |
#3 · Zasláno: 18. 4. 2014, 20:28:12
CZghost:
No to by možná šlo, jenže javascript moc dobře neovládám, nebo spíše vůbec. Proto bych i ocenil nějaký názorný příklad. |
||
Alphard Profil |
#4 · Zasláno: 18. 4. 2014, 20:49:36
V náznaku Živá ukázka. Měním jen barvu formu, ideálně překrýt celou obrazovku průhlednou šedou a do popředí dát ten progress gif. Nicméně pro upload 2 GB by možná stálo za úvahu udělat progress bar se skutečnými procenty.
|
||
Tomas256 Profil |
#5 · Zasláno: 18. 4. 2014, 23:36:11
Alphard:
Díky za tu ukázku, script funguje. |
||
Dusan Profil * |
#6 · Zasláno: 18. 4. 2014, 23:49:29 · Upravil/a: Dusan
Malo by sa to dat urobit aj cisto ako server-side riesenie. Vyuziva sa k tomu $_SESSION pole:
http://www.php.net/manual/en/session.upload-progress.php Osobne som to zatial neskusal, ale javi sa mi to ako velmi zaujimave riesenie pre zobrazovanie stavu uploadovanych suborov. Neskor toto riesenie vyskusam aj v praxi :) EDIT: vyhoda toho je hlavne v tom, ze vidis realny status prenesenych bajtov uploadovaneho suboru. |
||
Tomas256 Profil |
#7 · Zasláno: 19. 4. 2014, 10:08:47
Dusan:
Jo to zní zajímavě někdy vyzkouším v praxi. Tento gif (místo progress baru) měl sloužit jako nouzovka, protože na tento script, na vyřešení jsem neměl moc času a co se tíče progress baru s mými znalostmi javascriptu by to bylo na delší dobu. |
||
Alphard Profil |
#8 · Zasláno: 19. 4. 2014, 10:50:35
Tomas256 [#7]:
Detailněji o tomto viz Sessions. Jsou tam zmíněny i alternativní možnosti (js u klienta), které bych zřejmě preferoval. Nicméně jestli to chcete zkusit přes session, je tam odkaz na vyzkoušený návod na www.sitepoint.com/tracking-upload-progress-with-php-and-javascript. |
||
Časová prodleva: 10 let
|
0