Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
Avatar
miksiklukas
Člen
Avatar
miksiklukas:30.3.2015 16:29

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:30.3.2015 16:38

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

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

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
Odpovídá na miksiklukas
Uživatel sítě :30.3.2015 16:43

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

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

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:30.3.2015 21:11

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:30.3.2015 21:14

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ý:30.3.2015 22:14

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:30.3.2015 22:21

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:31.3.2015 14:44

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
Odpovídá na miksiklukas
Uživatel sítě :31.3.2015 15:14

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:31.3.2015 15:17

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
Odpovídá na miksiklukas
Uživatel sítě :31.3.2015 15:25

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:31.3.2015 15:30

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
Odpovídá na miksiklukas
Uživatel sítě :31.3.2015 15:31

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:31.3.2015 15:32

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
Odpovídá na Michal Štěpánek
miksiklukas:31.3.2015 15:41

A to mám udělat jak?

 
Nahoru Odpovědět
31.3.2015 15:41
Avatar
Richard
Člen
Avatar
Odpovídá na miksiklukas
Richard:31.3.2015 16:12

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:31.3.2015 16:18

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
Tvůrce
Avatar
Odpovídá na miksiklukas
mkub:31.3.2015 17:40

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

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

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.