Autor Zpráva
Tomas256
Profil
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
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
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
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
Alphard:
Díky za tu ukázku, script funguje.
Dusan
Profil *
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
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
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.

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: