2017-06-27 14 views
2

私のような、さまざまなファイルの種類ごとに異なる最大ファイルサイズを設定する:画像の最大ファイルサイズ(PNG、JPEG、およびGIF) ファイルタイプごとに異なる最大ファイルサイズ?

  • 50メガバイトの動画の最大ファイルサイズ(MP4

    • 10メガバイト

      $validator = Validator::make($request->all(), [ 
          'file' => 'required|max:10000|mimes:jpg,jpeg,png,gif,mp4', 
      ]); 
      

      どのように私は別のファイルタイプの異なる最大ファイルサイズを設定することができます)

  • は今のところ、私のバリデータは、すべてのファイルタイプのための10メガバイトができます?

    +2

    私は、クライアント側の検証(JavaScriptを)行うだろうので、ユーザは、12メガバイトの画像をアップロードしていないと、それは「あなたができない」と言い、いっそ単にユーザーのアップロード50メガバイトのファイルを可能にするが、それをサイズ変更/画像をトリミング(これはあなたが求めているのではないが、解決の一種であることは分かっています)。 thoでもRAWとして撮影した画像は数多くありませんが、10 MB以上のサイズになるように適切なフォーマットに変換しました。お楽しみください:) – Kyslik

    答えて

    2

    if条件ルールを使用してこの問題を解決できます。私は知っている、それはベストプラクティスではないが、あなたの問題を解決することができます。

    $default_max_value = 10000; 
    if($request->hasFile('file') && $request->get('file')->getClientOriginalExtension() == 'mp4'){ 
        $default_max_value = 50000; 
    } 
    
    $validator = Validator::make($request->all(), [ 
        'file' => 'required|max:'.$default_max_value.'|mimes:jpg,jpeg,png,gif,mp4', 
    ]); 
    
    +0

    これは実際には素晴らしい解決策ですが、ユーザーが['getClientOriginalExtension()'](http://api.symfony.com/3.0/Symfony/Component/HttpFoundationの使用を認識しているので 'getMimeType()'を使用します) /file/UploadedFile.html#method_getClientOriginalExtension)が拡張機能について嘘をついてしまう可能性があります(これはsymfonyのapiページにも記載されています)。 – Kyslik

    +0

    確かに、 'getMimeType'を使用する方がセキュリティポイントビューでgetClientOriginalExtension()より優れています。しかし、私はそれが最善の解決策であるかどうかはわかりません。 Laravelは常に挑戦についていくつかの魔法を持っています。 – bl4cksta

    +0

    実際に使用されているシンフォニーコンポーネントです。 ['getClientMimeType()'](http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/UploadedFile.html#method_getClientMimeType)は、どちらの世界にも最適です。 – Kyslik

    関連する問題