common.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. from_type=from_type,
  49. upload_time=datetime.now())
  50. db.add(db_entity)
  51. db.commit()
  52. return {
  53. "code": 1,
  54. "msg": "上传成功",
  55. "time": unixstamp(),
  56. "data": {
  57. "id": file_id
  58. }
  59. }
  60. except Exception as e:
  61. traceback.print_exc()
  62. return {
  63. "code": 0,
  64. "msg": "上传失败,文件太大",
  65. "time": unixstamp(),
  66. "data": {}
  67. }
  68. def get_filename(suffix):
  69. return str(uuid.uuid1()) + suffix.lower()