file_validators.py 789 B

12345678910111213141516171819202122
  1. # 文件类型验证器
  2. from fastapi import UploadFile, HTTPException
  3. def validate_file_type(file: UploadFile) -> str:
  4. """验证文件类型并返回文件类型"""
  5. filename = file.filename.lower()
  6. SUPPORTED_RASTER_TYPES = {'.tif', '.tiff', '.img'}
  7. SUPPORTED_VECTOR_TYPES = {'.geojson', '.json', '.shp'}
  8. file_ext = filename.split('.')[-1]
  9. if f'.{file_ext}' in SUPPORTED_RASTER_TYPES:
  10. return 'raster'
  11. elif f'.{file_ext}' in SUPPORTED_VECTOR_TYPES:
  12. return 'vector'
  13. else:
  14. supported_formats = list(SUPPORTED_RASTER_TYPES) + list(SUPPORTED_VECTOR_TYPES)
  15. raise HTTPException(
  16. status_code=400,
  17. detail=f"不支持的文件类型。支持的格式有: {', '.join(supported_formats)}"
  18. )