Autor Zpráva
PanTau14
Profil
Dobrý den,

jsem amatér po stránce PHP, hledám JEDNODUCHÝ php script(tlačitka, php kód), který nahraje vybrané OBRÁZKY (jpg,png) z počítače do určité složky na webu.

Hledal jsem na googlu, našel ale nefunkční (nedokážu je upravit), poradí mi někdo? Nebo mi ten jednoduchý kód napíše? Děkuji mockrát.

V podstatě asi takhle -




Děkuji všem co poradí.
ShiraNai7
Profil
PanTau14:
Tumáš, sepsáno za chvilku. Pod konfigurací si přepiš co potřebuješ. Je taky možné nahrát více obrázku najednou :)

<?php

// konfigurace
$uploadDir = './obrazky'; // adresar, kam se maji nahrat obrazky (bez lomitka na konci)
$allowedExt = array('jpg', 'jpeg', 'png', 'gif'); // pole s povolenymi priponami

// zpracovani uploadu
if(isset($_FILES['obrazky']) && is_array($_FILES['obrazky']['name'])) {

    $counter = 0;
    $allowedExt = array_flip($allowedExt);
    foreach($_FILES['obrazky']['name'] as $klic => $nazev) {

        $fileName = basename($nazev);
        $tmpName = $_FILES['obrazky']['tmp_name'][$klic];

        // kontrola souboru
        if(
            !is_uploaded_file($tmpName)
            || !isset($allowedExt[strtolower(pathinfo($fileName, PATHINFO_EXTENSION))])
        ) {
            // neplatny soubor nebo pripona
            continue;
        }

        // presun souboru
        if(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) {
            ++$counter;
        }

    }

    echo "<p>Bylo nahráno {$counter} z ".sizeof($_FILES['obrazky']['name'])." obrázků.</p>";

}

?>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="obrazky[]" multiple="multiple" />
    <input type="submit" value="Nahrát" />
</form>
PanTau14
Profil
ShiraNai7:

Ahoj Shiranai7, děkuji za ochotu napsat tento jednoduchý kód, nicméně, když to vložím do INDEX.php, spustím na serveru - vyberu jeden obrázek a dám nahrát, napíše to ,,Bylo nahráno 0 z 1 obrázků,, (pokud vyberu 2 - bylo nahráno 0 z 2 obrázků) a ve složce nic. Dělám něco blbě?

UPRAVENO - Už jsem zjistil proč to tak je, dá se nějak omezit velikost obrázku? - Nebo spiš, povolit VĚTŠÍ? Pokoušel jsem se nahrát 2,5mb fotku a nejde (bylo nahráno 0z1), jinak 23kb obrázek jde parádně :)
Alphard
Profil
PanTau14:
Výchozí limit je 2 mega. Nastavení jsem konkrétně uváděl jen já snad 10x. V php.ini si vyhledejte volby, které obsahuji upload, nejde to přehlédnout. Myslím, že je to upload_max_filesize.
ShiraNai7
Profil
PanTau14:
Velikost záleží na nastavení serveru, konkrétně direktivy v php.ini - upload_max_filesize a post_max_size.
PanTau14
Profil
ShiraNai7:

Alphard:


Děkuji, upravil jsem .htaccess a již to funguje, MÁTE MÉ VELKÉ DÍK :)


Obohatil jsem to ještě o chybovou hlášku.

    if ($counter > 0)
    echo "<p>Bylo nahráno {$counter} z ".sizeof($_FILES['obrazky']['name'])." obrázků, děkujeme!</p>"."<br>";
    else
    echo "Někde se stala chyba, nic se nenehrálo!"."<br>";
kirisek95@gmail.com
Profil
Zdravíčko, objevil se mi na webu trošku problém, POST přenese pouze 25 souborů, tj. vyberu 27 a on zpracuje pouze 25 (nahráno X z 25) nevíte někdo, co s tím? protože už vůbec nevím, kde hledat =/
tedy předpokládám, že je limit v přenosu POST, pokud je jinde, budu rád, když dáte rady a tipy =) prostě jednoduchý pokus, kolik souborů pošle dál a prostě max 25...

<?php echo count($_FILES['obrazky']['name']); ?>

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="obrazky[]" multiple="multiple" />
    <input type="submit" value="Nahrát" />
</form>
Alphard
Profil
kirisek95@gmail.com [#7]:
Když už píšete do cizího vlákna, co si ho nejdřív přečíst? Jak jsem psal v [#4] Alphard, tentokrát jde o volbu max_file_uploads.
Workaround je použít javascript k tomu, aby se soubory posílaly jednotlivě.
kirisek95@gmail.com
Profil
Alphard:
Píšu sem, protože se mi nechtělo zakládat nové vlákno a souvisí to spolu
jinak max_file_uploads mám

¨

jediné, co v phpinfo vidím s omezením na 25 a má evidentně něco společného se soubory, tak je
suhosin.upload.max_uploads



ale ať zkouším, co zkouším, nejde mi v php.ini ani .htaccess přenastavit =/ nevíš, co s tím?

a přidání php_value suhosin.upload.max_uploads = 50 do .htaccess mi vyhodí internal server error
juriad
Profil
Bez toho rovnítka:
php_value  suhosin.upload.max_uploads  50
www.flexicontent.org/documentation/faq/item/516-cannot-upload-more-than-20-images-via-a-single-submission-of-item-form.html
kirisek95@gmail.com
Profil
juriad:
přidáno do .htaccess a v phpinfo se nic nezměnilo, takže asi poslední východisko vidím napsat na helpdesk hostingu

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: