web-dev-qa-db-fra.com

Laravel limites de taille maximale de téléchargement

Mon site Web est hébergé sur un serveur partagé. La limite maximale de téléchargement est de 5 Mo. Toutes les validations et le téléchargement de fichiers fonctionnent correctement si le fichier téléchargé fait moins de 5 Mo. Mais quand un fichier supérieur à 5Mo est téléchargé, je vois ceci  enter image description here . Comment valider ou forcer le fichier à se trouver sous la limite de téléchargement à partir du serveur?

6
baig772

Vous ne semblez pas intéressé à modifier les limites PHP pour autoriser les fichiers plus volumineux. Il me semble que vous voulez que votre envoi maximal soit de 5 Mo et que vous receviez une réponse correcte si c'est terminé.

Vous pouvez gérer l'exception FileException dans votre gestionnaire d'exceptions à app/Exceptions/Handler.php. Mettez à jour la méthode render pour ajouter le code dont vous avez besoin. Par exemple, si vous souhaitez renvoyer une exception de validation, vous devez gérer la validation dans le gestionnaire d'exceptions pour l'exception FileException.

public function render($request, Exception $exception)
{
    if ($exception instanceof \Symfony\Component\HttpFoundation\File\Exception\FileException) {
        // create a validator and validate to throw a new ValidationException
        return Validator::make($request->all(), [
            'your_file_input' => 'required|file|size:5000',
        ])->validate();
    }

    return parent::render($request, $exception);
}

Ceci n’a pas été testé, mais devrait vous donner l’idée générale.

Vous pouvez également effectuer une validation côté client via javascript, de sorte qu'un fichier trop volumineux ne soit jamais réellement envoyé sur votre serveur. Toutefois, le javascript peut être désactivé ou supprimé par le client. Il serait donc utile de configurer la gestion côté serveur de Nice. .

Pour la validation côté client, si vous associez un gestionnaire d'événements à l'événement "change" pour l'entrée de fichier, vous pouvez vérifier la taille du fichier à l'aide de this.files[0].size, puis effectuer toute action supplémentaire qui suit (désactiver le formulaire, supprimer le fichier téléchargé, etc.).

5
patricus
$validator = Validator::make($request->all(), [
    'file' => 'max:5120', //5MB 
]);

dans votre contrôleur

et dans php.ini 

upload_max_filesize = 10MB
5
Exprator

post_max_size et upload_max_filesize sont des directives que vous pouvez définir pour configurer votre fichier php.ini OR fichier .htaccess OR fichier httpd.conf.

Exemple php.ini:

post_max_size=15M
upload_max_filesize=15M

.htaccess exemple:

php_value post_max_size=15M
php_value upload_max_filesize=15M

httpd.conf exemple:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /var/www/html/example/
    ErrorLog /var/log/httpd/error.log
    <Directory /var/www/html/example/>
      AllowOverride None
      <IfModule mod_php5.c>
        php_value post_max_size=15M
        php_value upload_max_filesize=15M
      </IfModule>
    </Directory>
</VirtualHost>

Vous pouvez utiliser les règles de validation de Laravel:

 'image_file_input_name' => 'required|mimes:jpeg,bmp,png|size:5000',

taille: valeur

Le champ en cours de validation doit avoir une taille correspondant à la valeur donnée . Pour les données de chaîne, la valeur correspond au nombre de caractères. Pour données numériques, la valeur correspond à une valeur entière donnée. Pour un tableau, taille correspond au nombre de tableaux. Pour les fichiers, taille correspond à la taille du fichier en kilo-octets.

Vous pouvez en savoir plus sur la validation et son utilisation.

2
Alankar More

En laravel, vous pouvez valider comme ceci -

$validator = Validator::make($request->all(), [
    'file' => 'max:5120',
]);

La valeur est en kilo-octets. c’est-à-dire max: 10240 = max 10 Mo .

lie à l'événement onchange de votre champ de saisie

$('#upFile').bind('change', function() {

  //this.files[0].size         gets the size of your file and then you can validate accourdingly...
  alert(this.files[0].size);

});

J'espère que ceci vous aidera.

0
Suniti Yadav

Vous pouvez le faire avec jQuery/javascript (ce qui signifie que le fichier ne sera pas téléchargé, mais vous pouvez le vérifier avant de l'envoyer à votre script PHP).

$('#myFile').bind('change', function() {
  let filesize = this.files[0].size // On older browsers this can return NULL.
  let filesizeMB = (filesize / (1024*1024)).toFixed(2);

  if(filesizeMB <= 5) {
      // Allow the form to be submitted here.
  } else {
      // Don't allow submission of the form here.
  }

});

Mais faites toujours la validation côté serveur. Incase vous déplacez vers un site Web plus fort et voulez toujours que votre site Web fonctionne sans n'importe quels bizarreries.

$validator = Validator::make($request->all(), [
    'file' => 'max:5120', //5MB
]);

Tout cela n'a pas été testé, mais devrait fonctionner.

0
Classified

La limite de 5 Mo est définie par votre hébergeur et ne peut probablement pas être modifiée.

Pour télécharger des fichiers plus volumineux que la limite, vous devrez le télécharger en plusieurs parties.

Un paquet laravel qui le fait: https://github.com/jildertmiedema/laravel-plupload

0
Quezler

vous pouvez vérifier la taille de votre fichier par max validator

'file' => 'required|max:5128'; // max file size: 5M
0
Farshad