Problema con upload di immagini che superano 2MB

Fabio Grasso

Nuovo Utente
6 Nov 2014
26
0
0
31
www.grassofabio.com
Buona serata,mi ritrovo con un problema che non so come gestire,ho uno script che recupera un'immagine da un form e che dopo aver superato qualche controllo viene salvata in una cartella.
Ora se le immagini caricate hanno una dimensione minore o uguale a 2Mb vengono salvate correttamente,mentre se superano questo limite non vengono proprio prese in considerazione da php infatti ho controllato con la funzione file_exists($_FILES['immagine']['tmp_name']) e mi restituisce false.

Leggendo per la rete ho scoperto che il problema è dovuto all'opzione upload_max_filesize nel file php.ini che di default è impostato a 2MB e infatti aumentando il valore il problema si risolve.

Ma ho anche letto che tale modifica si può fare solo in locale,e che la maggior parte dei server non permettono di modificare questo parametro :(

Avete dei suggerimenti per risolvere questo inconveniente?
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
135
0
16
Roma
so che per le versioni inferiori a PHP 5.3 si può modificare il php.ini così:
PHP:
ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');
Ma non credo che il tuo provider lo permetta.
 

napuleone

Utente Attivo
12 Nov 2014
56
0
6
ho un problema simile e se prova a caricare file grande comunque mi va in errore.
voi riuscite a gestirlo ?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
PHP:
<?php
//......
$ammesso=2000000;
if($_FILES['immagine']['size'] > $ammesso){
	echo "file troppo grande";
}else{
	//....
}
//...
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
La condizione si mette apposta : se non è verificata non deve entrare.
 

Fabio Grasso

Nuovo Utente
6 Nov 2014
26
0
0
31
www.grassofabio.com
Riprendendo l'esempio di Borgo Italia
Codice:
 <?php
//......
$ammesso=2000000;
if($_FILES['immagine']['size'] > $ammesso){
    echo "file troppo grande";
}else{
    echo "ok";
}
//...
?>
In teoria caricando un immagine superiore a 2MB dovrebbe stampare "file troppo grande",invece stampa sempre ok
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
"immagine" dovrebbe essere il name del tuo input file.
posta l'html del form
 

Fabio Grasso

Nuovo Utente
6 Nov 2014
26
0
0
31
www.grassofabio.com
esatto 'immagine' è il nome del input file...
ecco un semplice form di prova:
Codice:
<form method="post" enctype="multipart/form-data">
<input type="file" name="immagine">
<input type="submit" value="upload">
</form>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ho notato che se il file supera le dimensioni indicate nel php.ini viene restituito 0 o false (non ho indagato)
in questo caso cmq possiamo aggiungere alla condizione una verifica i più
PHP:
<?php
$ammesso = 200000;
if (isset($_FILES['immagine'])) {
    if ($_FILES['immagine']['size'] === 0 || $_FILES['immagine']['size'] > $ammesso) {
        echo "file vuoto o troppo grande";
    } else {
        echo "ok";
    }
}
?>