Outils pour utilisateurs

Outils du site


web:php:file-upload

Table des matières

Upload de fichier en PHP

Notes :

  • Liste à pucesi la taille du fichier envoyé dépasse upload_max_filesize, la variable $_FILES contiendra, entre autres choses, l'erreur rencontrée. Tandis que si le formulaire complet (y compris le fichier) dépasse la configuration post_max_size, le formulaire ne sera pas transmis à PHP. Cela veut dire que $_POST et $_FILES seront vides. Pour détecter ce dernier cas, une solution peut être, comme évoqué ici, de vérifier que $_POST est vide, mais que $_SERVER['CONTENT_LENGTH'] a une valeur supérieure à 0.

Quelques fonctions utilitaires liées à l'envoi de fichier via un formulaire avec <input type="file">.

public static function getFileUploadMaxSize() {
    $upload_max_filesize = ini_get('upload_max_filesize');
    $upload_max_filesize_bytes = self::sizeStringToByte($upload_max_filesize);
 
    $post_max_size = ini_get('post_max_size');
    $post_max_size_bytes = self::sizeStringToByte($post_max_size);
 
    if($upload_max_filesize_bytes < $post_max_size_bytes) {
        return $upload_max_filesize;
    } else {
        return $post_max_size;
    }
}
 
public static function sizeStringToByte($string) {
    $size = (float)mb_substr($string, 0, -1);
    $unit = mb_strtolower(mb_substr($string, -1));
 
    return (int)round($size * pow(1024, strpos('bkmgtpezy', $unit)));
}
 
public static function sizeByteToString($bytes) {
    $units = 'bkmgtpezy';
    $value = $bytes;
    while ($value > 1024 && $unit_rank < 8) {
        $value / 1024;
        $unit_rank++;
    }
 
    return round($value, 2).$units[$unit_rank]);
}
web/php/file-upload.txt · Dernière modification : le 18/08/2015 à 12:49 de Yosko