field_check.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import re
  2. from flask import current_app
  3. from app import Config
  4. # 读取文件类型配置
  5. ALLOWED_IMAGE_EXTENSIONS = Config.ALLOWED_IMAGE_EXTENSIONS
  6. ALLOWED_VIDEO_EXTENSIONS = Config.ALLOWED_VIDEO_EXTENSIONS
  7. ALLOWED_MODEL_EXTENSIONS = Config.ALLOWED_MODEL_EXTENSIONS
  8. def allowed_image_file(file):
  9. """
  10. 检查文件是否为允许的图片类型
  11. """
  12. return '.' in file.filename and file.filename.rsplit('.', 1)[1].lower() in ALLOWED_IMAGE_EXTENSIONS
  13. def allowed_video_file(file):
  14. """
  15. 检查文件是否为允许的视频类型
  16. """
  17. return '.' in file.filename and file.filename.rsplit('.', 1)[1].lower() in ALLOWED_VIDEO_EXTENSIONS
  18. def allowed_model_file(file):
  19. """
  20. 检查文件是否为允许的模型类型
  21. """
  22. return '.' in file.filename and file.filename.rsplit('.', 1)[1].lower() in ALLOWED_MODEL_EXTENSIONS
  23. # 头像文件校验
  24. def is_valid_avatar_file(avatar_file):
  25. """
  26. 校验头像文件是否合规。
  27. :param avatar_file: 头像文件
  28. :return: 如果合规,返回 True,否则返回 False。
  29. """
  30. # 读取头像文件配置
  31. max_avatar_size = current_app.config['MAX_AVATAR_SIZE'] / (1024 ** 2) # MB
  32. # 校验文件类型
  33. if not allowed_image_file(avatar_file):
  34. return False
  35. # 校验文件大小
  36. avatar_size = len(avatar_file.read()) / (1024 ** 2) # MB
  37. if avatar_size > max_avatar_size:
  38. return False
  39. # 重置文件读取指针
  40. avatar_file.seek(0)
  41. return True
  42. # 邮箱校验
  43. def is_valid_email(email):
  44. """
  45. 校验邮箱格式是否有效。
  46. :param email: 邮箱地址
  47. :return: 如果邮箱格式正确,返回 True,否则返回 False。
  48. """
  49. email_regex = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
  50. return re.match(email_regex, email) is not None
  51. # 手机号校验
  52. def is_valid_phone(phone):
  53. """
  54. 校验手机号格式是否有效。
  55. :param phone: 手机号码
  56. :return: 如果手机号格式正确,返回 True,否则返回 False。
  57. """
  58. phone_regex = r'^\+?\d{10,15}$'
  59. return re.match(phone_regex, phone) is not None