Ciao a tutti.
Ho un problema con upload di file di grandi dimensioni come i video.
La mia funzione è la seguente:
codice:
function uploadFile($formName, $percorso, $nuovoNome, $maxSize = 2500000) {
//error_reporting(E_ALL); // 2047 e' la costante E_ALL che riporta tutti gli errori
if(
is_uploaded_file($_FILES[$formName]['tmp_name']) && // se è stato caricato
($_FILES[$formName]['size'] < $maxSize) ) { // se pi' piccolo di 5 Mega
if(!move_uploaded_file($_FILES[$formName]['tmp_name'], $percorso.$nuovoNome)) {// sposto il file
echo "si è verificato un errore durante l'upload: ".$_FILES[$formName]["error"];
return false;
}
@chmod($percorso.$nuovoNome, 0755);
return $percorso.$nuovoNome;
}
else { // c'e' qualche errore
$errori[0] = "nessun errore, l’upload è stato eseguito con successo";
$errori[1] = "il file caricato eccede la dimensione massima specificata in upload_max_filesize";
$errori[2] = "il file inviato eccede le dimensioni specificate nel parametro MAX_FILE_SIZE del form (se presente)";
$errori[3] = "upload eseguito solo parzialmente";
$errori[4] = "il file non è stato caricato";
$errori[5] = "la cartella temporanea non esiste (da PHP 4.3.10 e PHP 5.0.3)";
echo "si è verificato un errore durante l'upload: ".$_FILES[$formName]["error"]."
";
echo 'Nome file temporaneo: ' . $_FILES['foto']['tmp_name'] . '
';
echo 'Nome file: '.$_FILES[$formName]['name'].'
';
echo 'MIME Type: '.$_FILES[$formName]['type'].'
';
echo 'Dimensione: '.$_FILES[$formName]['size'].' byte
';
echo '======================
';
return false;
}
Il php.ini ha la variabile upload_max_size a 50MB
Se carico un'immagine o un qualsiasi video sotto (circa) i 7MB funziona,
se provo ad uploadare un file più grande mi entra nell'else perché
is_uploaded_file($_FILES[$formName]['tmp_name']) risulta false
e quello che mi fa impazzire
è che
$_FILES[$formName]["error"] non restituisce niente! Perchè!!!
Non restituisce niente neanche
$HTTP_POST_FILES[$formName]['error']
Cosa posso fare? Perché se il limite è 50MB non mi regge file da 10MB?
Capisco che in un sito online magari c'è il problema del timeout, ma in locale deve funzionare!... non so proprio dove battere la testa