Diskuze: Zjištění velikosti souboru většího než 2MB

PHP PHP Zjištění velikosti souboru většího než 2MB American English version English version

Avatar
miksiklukas
Člen
Avatar
miksiklukas:

Ahoj, potřeboval bych po odeslání formuláře (typu multipart/form-data) zjistit velikost souboru většího než 2MB. Pořád na to nemůžu přijít, už několik dní se hrabu v googlu.. Díky

<?php
...

filesize($_FILES['obrazek']['tmp_name'];

...


?>

<form method="POST" enctype="multipart/form-data">
<input type="file" name="obrazek" />
<input type="submit" value="Odeslat" />
</form>
 
Odpovědět 30.3.2015 16:29
Avatar
domiQ
Člen
Avatar
domiQ:

Veľkosť máš uloženú v premennej

$_FILES['obrazek']['size'];
Editováno 30.3.2015 16:38
 
Nahoru Odpovědět  +1 30.3.2015 16:38
Avatar
miksiklukas
Člen
Avatar
Odpovídá na domiQ
miksiklukas:

No, jasně, jenže když je ten soubor větší než 2 MB (nebo jiná hodnota, kterou si nastavím v php.ini), tak to vypíše chybovou hlášku..

 
Nahoru Odpovědět 30.3.2015 16:42
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na miksiklukas
Marek Z.:

Zde to pan Vrána řeší poněkud zajímavě:
http://php.vrana.cz/…zivatele.php

Nahoru Odpovědět  +1 30.3.2015 16:43
Chybami se člověk učí, běžte se učit jinam!
Avatar
miksiklukas
Člen
Avatar
miksiklukas:

Pořád to píše třeba: "Warning: POST Content-Length of 6403175 bytes exceeds the limit of 5242880 bytes in Unknown on line 0"

nemůže být chyba třeba v htaccess?

 
Nahoru Odpovědět 30.3.2015 20:36
Avatar
Richard
Člen
Avatar
Odpovídá na miksiklukas
Richard:

Podívej se na direktivy upload_max_filesize a post_max_size

Nahoru Odpovědět 30.3.2015 21:11
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
miksiklukas
Člen
Avatar
miksiklukas:

Potřeboval bych udělat, aby k týhle hlášce vůbec nedošlo. Dejme tomu, že limit mám nastavený na 5MB a v případě, že budu chtít nahrát soubor o velikosti 6MB vypíšu chybovou hlášku, která bude mít nějaký tvar, který budu chtít já.

 
Nahoru Odpovědět 30.3.2015 21:14
Avatar
Dominik Gavrecký:

Ak nastavíš podmienku ak je súbor väčší ako 5MB tak ... To by malo fungovať alebo skús napísať priamo na čo to potrebuješ a skúsime vymyslieť nejake vhodné riešenie ;)

Nahoru Odpovědět 30.3.2015 22:14
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
misaj
Člen
Avatar
Odpovídá na miksiklukas
misaj:

Nastavil bych direktivy upload_max_filesize a post_max_size dostatečně velké a poté použil něco takového:

if(isset($_FILES['obrazek']) {
    if($_FILES['obrazek']['size'] > 10485760) { //10 MB
        // obrázek je větší jak 10MB
    } else {
        // obrázek je menší než 10MB
    }
}
 
Nahoru Odpovědět 30.3.2015 22:21
Avatar
miksiklukas
Člen
Avatar
miksiklukas:

Vyřešil jsem to takto:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if(!isset($_FILES['obrazek']['size'])) {
        echo("<b>Soubor je příliš velký</b> <br />");
        echo("Maximální velikost: " . ini_get('upload_max_filesize'));
    }

    else {
        echo ("ok");

    }
}

Ale stejně, i když udělám tyhle podmínky, tak mi vyskočí hláška "Warning: POST Content-Length of 6403175 bytes exceeds the limit of 5242880 bytes in Unknown on line 0". Nechci tyto hlášky vypínat, ale předejít jim.

 
Nahoru Odpovědět 31.3.2015 14:44
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na miksiklukas
Marek Z.:

Tak překročíš povolený limit maximálního množství dat odesílaného metodou POST.
Myslím si, že v php.ini to bude post_max_size, zvětši u něj hodnotu na vyšší.

Nahoru Odpovědět 31.3.2015 15:14
Chybami se člověk učí, běžte se učit jinam!
Avatar
miksiklukas
Člen
Avatar
miksiklukas:

Ale takhle to nejde do někonečna.. Vždycky může existovat soubor větší než můj limit.

 
Nahoru Odpovědět 31.3.2015 15:17
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na miksiklukas
Marek Z.:

Tak dej limit třeba na bžilion G nebo vypni hlášky.
V provozu stejně máš mít hlášky vypnuté a dělal popřípadě log na bezpečné místo, měj je zapnuté pouze při testování aplikace..

Nahoru Odpovědět 31.3.2015 15:25
Chybami se člověk učí, běžte se učit jinam!
Avatar
miksiklukas
Člen
Avatar
miksiklukas:

Vypnutí hlášek jsem bral jako poslední možnost, jinak všechno funguje, jak má..

 
Nahoru Odpovědět 31.3.2015 15:30
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na miksiklukas
Marek Z.:

To je dobře, avšak pokud to máš už v ostrém provozu kam chodí například lidi, tak kvůli bezpečnosti je musíš vypnout. Z logu popřípadě zjistíš kde se stala chyba a hlášky nemusíš mít zapnuté.

Nahoru Odpovědět 31.3.2015 15:31
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na miksiklukas
Michal Štěpánek:

Tak si tu kontrolu prováděj ještě před odesláním formuláře ve chvíli, kdy si uživatel ten soubor vybere...

Nahoru Odpovědět 31.3.2015 15:32
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
miksiklukas
Člen
Avatar
 
Nahoru Odpovědět 31.3.2015 15:41
Avatar
Richard
Člen
Avatar
Odpovídá na miksiklukas
Richard:

Javascriptem, dvě vteřiny googlení a najdeš kompletní řešení, tak těžký to zase není, napsat příspěvek ti trvalo déle.

Nahoru Odpovědět 31.3.2015 16:12
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Odpovídá na Richard
Michal Šmahel (ceskyDJ):

Ten může být vypnutý, ne?? (JS moc nerozumím, kdyžtak mě omluv)

Nahoru Odpovědět 31.3.2015 16:18
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
mkub
Redaktor
Avatar
Odpovídá na miksiklukas
mkub:

alebo skus vyuzit obsluhu vynimiek, ale to uz je o OOP

 
Nahoru Odpovědět  +2 31.3.2015 17:40
Avatar
Odpovídá na miksiklukas
Michal Štěpánek:

Nějakým způsobem umožňuješ uživateli přiložit soubor, tak při té příležitosti ho můžeš hned zkontrolovat...

Nahoru Odpovědět 31.3.2015 20:08
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 21 zpráv z 21.