Laravel mimes xác thực không hoạt động

Laravel có một bộ quy tắc xác thực mạnh mẽ, nhưng đôi khi bạn cần xác thực các loại tệp cụ thể và không phải tất cả các tình huống đều được giải thích trong tài liệu của Laravel. Trong bài viết này, tôi sẽ quan sát các cách xác thực các tệp khác nhau như hình ảnh, base64, âm thanh và video, tệp CSV, tệp Excel, v.v. Vui lòng chọn loại tệp bạn cần xác thực trong mục lục bên dưới

Mục lục

Trình xác nhận tệp chính

Để xác thực tệp đã tải lên thành công Bạn có thể sử dụng trình xác thực tệp

'file_input' => 'file',

Để yêu cầu đầu vào tệp Bạn có thể sử dụng trình xác thực được yêu cầu giống như với bất kỳ loại đầu vào nào khác

'file_input' => 'file|required',

Trình xác nhận loại MIME

Để xác thực loại MIME của tệp đã tải lên, hãy sử dụng trình xác thực mimetypes

'file_input' => 'file|mimetypes:text/plain,text/html',

Để xác thực loại MIME của tệp đã tải lên bằng tiện ích mở rộng tệp, hãy sử dụng trình xác thực mimes

'file_input' => 'file|mimes:jpg,png',

Trình xác nhận kích thước tệp

Nếu bạn muốn xác thực tệp theo kích thước tệp chính xác tính bằng KB thì hãy sử dụng trình xác thực kích thước

'file_input' => 'file|size:1024',

Sử dụng trình xác thực tối đa để kiểm tra xem kích thước tệp có lớn hơn giá trị đã cho không

'file_input' => 'file|max:1024',

Sử dụng trình xác thực tối thiểu để kiểm tra xem kích thước tệp có nhỏ hơn giá trị đã cho không

'file_input' => 'file|min:1024',

Hoặc Bạn có thể sử dụng giữa trình xác thực để kiểm tra xem kích thước tệp có nằm trong khoảng giá trị tối thiểu và tối đa đã cho hay không

'file_input' => 'file|between:1024,2048',

Làm cách nào để xác thực nhiều tệp trong Laravel?

Nếu bạn cần xác thực một mảng tệp trong Laravel thì đầu vào của bạn phải có thuộc tính multiple và tên đầu vào phải là một mảng, như trong ví dụ bên dưới

________số 8

Và sau đó thêm dấu chấm sau với biểu tượng dấu hoa thị gần tên đầu vào trong quy tắc xác thực của bạn

'user_files.*' => 'file|between:1024,2048',

Nếu vì lý do nào đó bạn cần xác thực từng tệp đã tải lên từ mảng theo cách khác nhau thì bạn có thể chỉ định một chỉ mục cụ thể của tệp

'file_input' => 'file|required',
0

Lưu ý rằng nếu bạn muốn bắt buộc phải nhập nhiều tệp thì bạn không nên sử dụng dấu chấm/dấu hoa thị hoặc dấu chấm/chỉ mục

'file_input' => 'file|required',
1

Làm cách nào để xác thực hình ảnh trong Laravel?

Để kiểm tra xem tệp đã tải lên có phải là hình ảnh hay không, hãy sử dụng trình xác thực hình ảnh. Trình xác thực này kiểm tra xem tệp có một trong các phần mở rộng này không. jpg, jpeg, png, bmp, gif, svg hoặc webp

'file_input' => 'file|required',
2

Nếu bạn cần xác thực hình ảnh đối với các loại MIME tùy chỉnh thì hãy sử dụng. Nếu bạn cần xác thực kích thước tệp hình ảnh thì hãy sử dụng. Những trình xác nhận này được giải thích ở trên. Ví dụ về xác thực hình ảnh đối với các loại MIME tùy chỉnh và kích thước tệp có thể là

'file_input' => 'file|required',
3

Làm cách nào để xác thực kích thước hình ảnh?

Để xác thực kích thước hình ảnh, Laravel có trình xác thực kích thước có thể được sử dụng với 7 ràng buộc

  • min_width
  • chiều rộng tối đa
  • min_height
  • max_height
  • bề rộng
  • chiều cao
  • tỉ lệ

Ví dụ về xác thực kích thước hình ảnh

'file_input' => 'file|required',
4

Làm cách nào để xác thực các tệp base64 trong Laravel?

Đôi khi bạn cần xác thực các tệp base64. Ví dụ: ở frontend, bạn có một công cụ tạo ảnh gửi ảnh đã tạo ở định dạng base64 đến backend. Tất nhiên, bạn nên xác thực hình ảnh được mã hóa base64 này vì lý do bảo mật và cũng có thể bạn cần xác thực kích thước hình ảnh base64 hoặc hơn thế. Trong trường hợp này, tôi muốn giới thiệu gói crazybooot/base64-validation cho Laravel

Thật dễ dàng để cài đặt với nhà soạn nhạc

'file_input' => 'file|required',
5

Gói có các trình xác thực này

  • cơ sở64max
  • cơ sở64 phút
  • kích thước cơ sở64
  • tập tin cơ sở64
  • hình ảnh cơ sở64
  • base64mimetypes
  • base64mimes
  • cơ sở64giữa
  • cơ sở64size

Các trình xác thực này tương đương với các trình xác thực tệp gốc của Laravel mà tôi đã viết ở trên. Có một ví dụ về cách sử dụng chúng

'file_input' => 'file|required',
6

Gói này sử dụng các thông báo lỗi tương đương từ trình xác thực tệp gốc của Laravel. Ví dụ: trình xác thực base64image sẽ hiển thị thông báo lỗi của trình xác thực hình ảnh gốc của Laravel. Nếu bạn muốn sử dụng các thông báo lỗi của riêng mình, bạn cần xuất bản tệp cấu hình gói bằng lệnh này

'file_input' => 'file|required',
7

Lệnh này sẽ thêm config/base64validation. tập tin php. Mở nó và thay thế replace_validation_message thành false

'file_input' => 'file|required',
8

Và sau đó chỉ cần thêm các thông báo lỗi xác thực khi bạn chỉ cần thêm chúng. Ví dụ, mở resource/lang/en/validation. php và thêm những dòng này

'file_input' => 'file|required',
9

Làm cách nào để xác thực tệp âm thanh và video trong Laravel?

Để kiểm tra xem tệp đã tải lên là tệp âm thanh hay video, hãy sử dụng. Dưới đây là một và một. Tuy nhiên, các tệp video/âm thanh của Laravel đoán kiểu MIME không đáng tin cậy. Đó là bởi vì tôi đã tạo một gói bổ sung trình xác thực âm thanh và video vào dự án Laravel của bạn, gói này được gọi là Minuteoflaravel/laravel-audio-video-validator. Để cài đặt gói này, bạn nên cài đặt khung đa phương tiện ffmpeg

  • Trên Debian/Ubuntu, hãy chạy 
    'file_input' => 'file|mimes:jpg,png',
    4
  • Trên macOS với Homebrew.
    'file_input' => 'file|mimes:jpg,png',
    5

Sau đó cài đặt gói qua nhà soạn nhạc

'file_input' => 'file|mimetypes:text/plain,text/html',
0

Gói thêm các trình xác thực này

  • âm thanh
  • băng hình
  • giải mã
  • khoảng thời gian
  • thời lượng_tối đa
  • thời lượng_phút
  • video_width
  • video_height
  • video_max_width
  • video_max_height
  • video_min_width
  • video_min_height

Dưới đây là ví dụ về cách sử dụng các trình xác thực đó

'file_input' => 'file|mimetypes:text/plain,text/html',
1
'file_input' => 'file|mimetypes:text/plain,text/html',
2

Bước đầu tiên là kiểm tra xem tệp đã tải lên có phải là tệp âm thanh hay không, nếu thời lượng của nó nằm trong khoảng từ 30 đến 300 giây và nếu tên codec của tệp âm thanh là mp3 hoặc pcm_s16le[. sóng]. Cái thứ hai kiểm tra xem tệp đã tải lên có phải là tệp video hay không, nếu thời lượng của nó là chính xác 60 giây, nếu tên codec của nó là h264[. mp4] và nếu độ phân giải của nó không lớn hơn 1900×1080

Danh sách các loại MIME âm thanh

aifaudio/aiff. aifaudio/x-aiff. aifcaudio/aiff. aifcaudio/x-aiff. aiffaudio/aiff. aiffaudio/x-aiff. auaudio/cơ bản. auaudio/x-au. funkaudio/làm. gsdaudio/x-gsm. gsmaudio/x-gsm. itaudio/nó. jamaudio/x-jam. karaudio/midi. laaudio/nspaudio. laaudio/x-nspaudio. lamaudio/x-liveaudio. lmaaudio/nspaudio. lmaaudio/x-nspaudio. m2aaudio/mpeg. m3uaudio/x-mpequrl. âm thanh trung bình/âm thanh trung bình. âm thanh trung bình/x-trung bình. âm thanh trung bình/x-midi. trung âm / midi. midiaudio/x-trung. midiaudio/x-midi. mjfaudio/x-vnd. vụ nổ âm thanh. mjuicemediafile. modâm thanh / mod. modaudio/x-mod. mp2audio/mpeg. mp2audio/x-mpeg. âm thanh mp3/mpeg 3. mp3audio/x-mpeg-3. mpaaudio/mpeg. mpgaudio/mpeg. mpgaaudio/mpeg. myaudio/làm. pfunkaudio / thực hiện. pfunkaudio / thực hiện. của tôi. vui nhộn. qcpaudio/vnd. qcelp. raaudio/x-pn-realaudio. raaudio/x-pn-realaudio-plugin. raaudio/x-realaudio. ramaudio/x-pn-realaudio. rmaudio/x-pn-realaudio. rmiaudio/trung bình. rmmaudio/x-pn-realaudio. rmpaudio/x-pn-realaudio. rmpaudio/x-pn-realaudio-plugin. rpmaudio/x-pn-realaudio-plugin. s3maudio/s3m. sidaudio/x-psid. sndaudio/cơ bản. sndaudio/x-adpcm. tsiaudio/tsp-audio. tspaudio/tsplayer. giọng hát/giọng hát. vocaudio/x-voc. voxaudio/voxware. vqeaudio/x-twinvq-plugin. vqfaudio/x-twinvq. vqlaudio/x-twinvq-plugin. wavaudio/wav. wavaudio/x-wav. xmaudio/xm

Danh sách các loại MIME video

aflvideo/animaflex. asfvideo/x-ms-asf. asxvideo/x-ms-asf. asxvideo/x-ms-asf-plugin. avivideo/avi. avivideo/msvideo. avivideo/x-msvideo. avsvideo/avs-video. difvideo/x-dv. dlvideo/dl. dlvideo/x-dl. dvvideo/x-dv. quay phim/quay phim. flivideo/x-fli. tính năng fmfvideo/x-atomic3d. glvideo/gl. glvideo/x-gl. isuvideo/x-isvideo. m1vvideo/mpeg. m2vvideo/mpeg. video mjpeg/x-motion-jpeg. moovvideo/quicktime. movvideo/thời gian nhanh. phimvideo/x-sgi-phim. mp2video/mpeg. mp2video/x-mpeg. mp2video/x-mpeq2a. mp3video/mpeg. mp3video/x-mpeg. mpavideo/mpeg. mpevideo/mpeg. mpegvideo/mpeg. mpgvideo/mpeg. mvvideo/x-sgi-phim. qtvideo/thời gian nhanh. qtcvideo/x-qtc. rvvideo/vnd. rn-realvideo. scmvideo/x-scm. vdovideo/vdo. vivvideo/vivo. vivvideo/vnd. sống. vivovideo/vivo. vivovideo/vnd. sống. vosvideo/vosaic. xdrvideo/x-amt-demorun. xsrvideo/x-amt-showrun

Làm cách nào để xác thực tệp CSV trong Laravel?

Khi chúng tôi đang nói về xác thực tệp CSV thì chúng tôi muốn nói đến một trong ba biến thể xác thực khác nhau

  1. Kiểm tra xem loại MIME hoặc phần mở rộng tệp có phù hợp với nhu cầu của bạn không
  2. Kiểm tra xem tệp đã tải lên có được định dạng ở định dạng CSV không
  3. Kiểm tra xem cấu trúc tệp CSV của tệp đã tải lên có phù hợp với nhu cầu của bạn không

Biến thể đầu tiên nên được sử dụng khi bạn muốn kiểm tra xem tệp đã tải lên có phải là tệp CSV không. Để thực hiện việc này, hãy luôn nhớ rằng người dùng có thể đổi tên bất kỳ phần mở rộng tệp nào thành *. csv và nếu bạn xác thực đối với loại MIME thì hãy nhớ rằng tệp CSV thực có thể có loại MIME văn bản/thuần túy. Vì vậy, theo tôi, nếu bạn cần chắc chắn rằng tệp đã tải lên là tệp CSV thì bạn nên sử dụng biến thể xác thực thứ hai để kiểm tra xem tệp đã tải lên có được định dạng ở định dạng CSV hay không. Bạn nên sử dụng biến thể xác thực thứ ba khi muốn xác thực các ô của tệp CSV đã tải lên. Dưới đây tôi sẽ xem xét các biến thể thứ hai và thứ ba

Để kiểm tra xem tệp đã tải lên có được định dạng ở định dạng CSV hay không, bạn có thể sử dụng gói đơn giản mà tôi đã tạo cho mục đích này có tên là Minuteoflaravel/laravel-csv-validator. Trình xác thực CSV, được gói này thêm vào, phân tích cú pháp tệp đã tải lên bằng cách sử dụng thư viện parsecsv/php-parsecsv và nếu không có lỗi trong quá trình phân tích cú pháp tệp thì quá trình xác thực sẽ được thông qua. Cài đặt gói này với nhà soạn nhạc

'file_input' => 'file|mimetypes:text/plain,text/html',
3

Và sau đó thêm trình xác thực csv vào quy tắc xác thực của bạn

'file_input' => 'file|mimetypes:text/plain,text/html',
4

Bạn có thể tùy chỉnh thông báo lỗi. Mở tài nguyên/lang/vi/xác thực. php và thêm tin nhắn của bạn

'file_input' => 'file|mimetypes:text/plain,text/html',
5

Nếu bạn chọn xác thực bằng biến thể xác thực thứ ba – xác thực ô tệp CSV – thì tôi khuyên bạn nên sử dụng gói SUKOHI/CsvValidator. Gói này cho phép bạn chọn các quy tắc xác thực Laravel mặc định cho từng ô. Để cài đặt gói này, hãy chạy lệnh composer

'file_input' => 'file|mimetypes:text/plain,text/html',
6

Sau đó thêm quy tắc xác thực cho các cột vào mảng

'file_input' => 'file|mimetypes:text/plain,text/html',
7

Tạo mảng tùy chọn

'file_input' => 'file|mimetypes:text/plain,text/html',
8

Và sau đó thêm trình xác thực vào quy tắc xác thực của bạn

'file_input' => 'file|mimetypes:text/plain,text/html',
9

Nếu bạn cần thêm quy tắc xác thực cho các ô theo tên cột thì tôi khuyên bạn nên sử dụng một gói khác có tên là Konafets/laravel-csv-validator. Gói này tương tự như gói trước nhưng bằng cách sử dụng gói này, bạn có thể thêm quy tắc xác thực vào các cột theo tên cột từ hàng tiêu đề. Để cài đặt

Chủ Đề