web-dev-qa-db-de.com

Maximale Größe der Uploadgröße für Laravel

Ich habe meine Website auf einem gemeinsam genutzten Server gehostet. Das maximale Upload-Limit beträgt 5 MB. Alle Überprüfungen und das Hochladen von Dateien funktionieren gut, wenn die hochgeladene Datei weniger als 5 MB beträgt. Wenn jedoch eine Datei mit mehr als 5 MB hochgeladen wird, sehe ich Folgendes  enter image description here . Wie kann ich die Datei unter dem Upload-Limit vom Server überprüfen oder erzwingen?

6
baig772

Sie scheinen kein Interesse daran zu haben, die Grenzwerte PHP zu ändern, um größere Dateien zuzulassen. Es sieht für mich so aus, als würden Sie möchten, dass Ihr maximaler Upload 5 MB beträgt, und eine korrekte Antwort zurückgeben, wenn er darüber hinweg ist.

Sie können die FileException-Ausnahme in Ihrem Exception-Handler unter app/Exceptions/Handler.php behandeln. Aktualisieren Sie die render-Methode, um den Code hinzuzufügen, den Sie benötigen. Wenn Sie beispielsweise eine Validierungsausnahme zurückgeben möchten, müssen Sie die Validierung im Exception-Handler für die FileException-Ausnahme durchführen.

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);
}

Dies ist nicht getestet, sollte aber die allgemeine Idee vermitteln.

Sie können auch eine clientseitige Validierung über Javascript durchführen, sodass eine zu große Datei nie wirklich an Ihren Server gesendet wird. Das JavaScript kann jedoch vom Client deaktiviert oder entfernt werden. In diesem Fall ist es ratsam, Nice Server Side Handling einzurichten .

Wenn Sie für die clientseitige Validierung einen Ereignishandler an das "change" -Ereignis für die Dateieingabe anhängen, können Sie die Dateigröße mit this.files[0].size überprüfen und anschließend weitere Aktionen ausführen (Formular deaktivieren, hochgeladene Datei entfernen usw.).

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

in Ihrem Controller

und in php.ini 

upload_max_filesize = 10MB
5
Exprator

post_max_size und upload_max_filesize sind Anweisungen, die Sie zum Konfigurieren der Datei php.ini OR .htaccess OR httpd.conf konfigurieren können.

php.ini Beispiel:

post_max_size=15M
upload_max_filesize=15M

.htaccess-Beispiel:

php_value post_max_size=15M
php_value upload_max_filesize=15M

httpd.conf Beispiel:

<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>

Ändere unten die Parameter in der php.ini, es funktioniert! für mich.

upload_max_filesize = 50M
memory_limit = 512M
max_input_time = -1
max_execution_time = 0
2
vivek s vamja

Sie können Laravel-Validierungsregeln verwenden:

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

größe: Wert

Das zu validierende Feld muss eine Größe haben, die mit dem angegebenen Wert übereinstimmt . Bei String-Daten entspricht der Wert der Anzahl der Zeichen. Zum Bei numerischen Daten entspricht der Wert einem bestimmten ganzzahligen Wert. Für ein Array, Größe entspricht der Anzahl des Arrays. Für Dateien die Größe entspricht der Dateigröße in Kilobyte.

Sie können mehr über die Validierung und ihre Verwendung lesen.

2
Alankar More

In Laravel können Sie so validieren -

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

Der Wert ist in Kilobytes. d. h: max: 10240 = max. 10 MB ... und in jquery -

bindet an das onchange-Ereignis Ihres Eingabefelds

$('#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);

});

Hoffe, das wird dir helfen.

0
Suniti Yadav

Sie können dies mit jQuery/javascript tun (was bedeutet, dass die Datei nicht hochgeladen wird. Sie können die Datei jedoch überprüfen, bevor sie an Ihr Skript PHP gesendet wird.)

$('#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.
  }

});

Aber immer die serverseitige Validierung. Wenn Sie zu einer stärkeren Website wechseln, möchten Sie trotzdem, dass Ihre Website ohne Macken funktioniert.

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

All das ist nicht getestet, sollte aber funktionieren.

0
Classified

Die Beschränkung auf 5 MB wird von Ihrem Webhost festgelegt und kann wahrscheinlich nicht geändert werden.

Um Dateien zu laden, die das Limit überschreiten, müssen Sie sie in Teilen hochladen.

Ein Laravel-Paket, das dies tut: https://github.com/jildertmiedema/laravel-plupload

0
Quezler

sie können die Dateigröße mit max validator überprüfen

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