Laravelの最大アップロードサイズの制限

私は自分のウェブサイトを共有サーバーでホストしています。アップロードの最大制限は5MBです。アップロードされたファイルが5MB以下であれば、すべての検証やファイルアップロードは問題なく動作します。しかし、5MB以上のファイルをアップロードすると、次のような表示が出ます。 。 どうすれば、サーバーからのアップロード制限の下でファイルを検証したり、強制的にアップロードさせたりすることができますか?

質問へのコメント (3)
ソリューション

PHPの制限を変更して、より大きなファイルを許可することに興味がないようです。 最大アップロードを5MBにして、それが終わったら適切な応答を返すように思えます。

app / Exceptions / Handler.phpの例外ハンドラー内で FileException例外を処理できます。 「レンダー」メソッドを更新して、必要なコードを追加します。 たとえば、検証例外を返す場合は、「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);
}

これはテストされていませんが、一般的なアイデアを与えるはずです。

JavaScriptを介してクライアント側の検証を行うこともできます。これにより、大きすぎるファイルが実際にサーバーに送信されることはありませんが、JavaScriptがクライアントによって無効にされたり削除されたりする可能性があるため、サーバー側の処理を適切に設定することをお勧めします。

クライアント側の検証では、ファイル入力の「変更」イベントにイベントハンドラーを添付すると、「this.files [0] .size」を使用してファイルサイズを確認し、その後追加のアクションを実行できます(フォームを無効にし、アップロードされたファイルを削除するなど.)。

解説 (1)

post_max_size および upload_max_filesize は、php.iniファイルOR .htaccessファイルOR httpd.confファイルを構成するように設定できるディレクティブです。

php.iniの例:

post_max_size=15M
upload_max_filesize=15M

。htaccessの例:

php_value post_max_size=15M
php_value upload_max_filesize=15M

httpd.confの例:


    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /var/www/html/example/
    ErrorLog /var/log/httpd/error.log

      AllowOverride None

        php_value post_max_size=15M
        php_value upload_max_filesize=15M


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

をコントローラの中に入れてください。

とphp.iniに記述します。

upload_max_filesize = 10MB
解説 (2)

php.iniのパラメーターの下に変更します。! 私のために。

upload_max_filesize = 50M
memory_limit = 512M
max_input_time = -1
max_execution_time = 0
解説 (0)

Laravelの検証ルールを使用することができます。

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

size:value

検証対象のフィールドは、指定された値と一致するサイズを持つ必要があります。 文字列データの場合、値は文字数に対応します。数値データの場合 数値データの場合、値は与えられた整数の値に対応します。配列の場合 配列の場合は,配列の個数に相当する。ファイルの場合は,サイズ は,ファイルサイズ(キロバイト単位)に対応する。

バリデーションとその使い方については、こちらをご覧ください

解説 (0)

これはjQuery / javascriptで行うことができます(これは、ファイルがアップロードされないことを意味しますが、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 
解説 (0)

ララベルでは、このように検証できます-。

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

値はキロバイトです。 つまり. max:10240 = max 10 MB . そして、冗談で-。

< input type = "file" id = "upFile" />。

入力フィールドのonchangeイベントにバインドします。

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

});

これがあなたを助けることを願っています。

解説 (0)

max バリデーターでファイルのサイズを確認できます。

'file' => 'required|max:5128'; // max file size: 5M
解説 (0)

5MBの制限はウェブホストによって設定されており、おそらく変更することはできません。

制限を超えるサイズのファイルをアップロードするには、分割してアップロードする必要があります。

これを行うlaravelのパッケージは、https://github.com/jildertmiedema/laravel-plupload

解説 (0)