common.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends, Form, Body, File, UploadFile
  4. from database import get_db
  5. from utils.StripTagsHTMLParser import *
  6. from sqlalchemy.orm import Session
  7. from datetime import datetime, timedelta
  8. import uuid
  9. from passlib.context import CryptContext
  10. from models import *
  11. from sqlalchemy import text, exists, and_, or_, not_
  12. from sqlalchemy.sql import func
  13. from models import *
  14. from extensions import logger
  15. from utils import *
  16. import os
  17. from .oauth import valid_access_token
  18. import traceback
  19. router = APIRouter()
  20. @router.post('/uploadfile')
  21. async def uploadfile(
  22. *,
  23. request: Request,
  24. certificate_no: str = Body(...),
  25. from_type: str = Body(...),
  26. file: UploadFile = File(...),
  27. client_id = Depends(valid_access_token),
  28. db: Session = Depends(get_db)
  29. ):
  30. try:
  31. file_name = file.filename
  32. suffix = os.path.splitext(file_name)[-1]
  33. new_file_name = get_filename(suffix)
  34. file_dir = os.path.join('/data/upload/mergefile/uploads/', "danger")
  35. os.makedirs(file_dir, mode=0o764, exist_ok=True)
  36. file_path = os.path.abspath("{}/{}".format(file_dir, new_file_name))
  37. if os.path.exists(file_path):
  38. os.remove(file_path)
  39. content = await file.read()
  40. with open(file_path, 'wb') as f:
  41. f.write(content)
  42. file_id = new_guid()
  43. db_entity = DangerUploadFile(
  44. id=file_id,
  45. certificate_no=certificate_no,
  46. file_name=file_name,
  47. save_filepath=file_path,
  48. file_type=suffix,
  49. from_type=from_type,
  50. upload_time=datetime.now())
  51. db.add(db_entity)
  52. db.commit()
  53. return {
  54. "code": 1,
  55. "msg": "上传成功",
  56. "time": unixstamp(),
  57. "data": {
  58. "id": file_id
  59. }
  60. }
  61. except Exception as e:
  62. traceback.print_exc()
  63. return {
  64. "code": 0,
  65. "msg": "上传失败,文件太大",
  66. "time": unixstamp(),
  67. "data": {}
  68. }
  69. def get_filename(suffix):
  70. return str(uuid.uuid1()) + suffix.lower()