解决小程序文件上传名字乱码的问题

This commit is contained in:
Administrator 2023-05-19 09:15:42 +08:00
parent 94635efa90
commit f789c60a3e
1 changed files with 6 additions and 4 deletions

View File

@ -1,6 +1,6 @@
import os import os
from pathlib import Path from pathlib import Path
from fastapi import APIRouter, UploadFile, File, Depends, HTTPException from fastapi import APIRouter, UploadFile, File, Depends, HTTPException, Header
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from Crud import FileCrud from Crud import FileCrud
from Schemas.UserSchemas import TokenData from Schemas.UserSchemas import TokenData
@ -8,7 +8,7 @@ from Utils.CommonUtils import file_md5
from Utils.SqlAlchemyUtils import get_db from Utils.SqlAlchemyUtils import get_db
from Schemas import FileSechemas from Schemas import FileSechemas
from Utils.AuthUtils import token_data_depend from Utils.AuthUtils import token_data_depend
from base64 import b64decode
router = APIRouter(prefix="/api/daily/file", tags=["文件"]) router = APIRouter(prefix="/api/daily/file", tags=["文件"])
allow_file_type = { allow_file_type = {
'image', 'image',
@ -19,8 +19,10 @@ allow_file_type = {
@router.post('/file_upload', response_model=FileSechemas.UserFileInfo, summary='文件上次') @router.post('/file_upload', response_model=FileSechemas.UserFileInfo, summary='文件上次')
def file_upload(file: UploadFile = File(...), def file_upload(name: str = Header(None), file: UploadFile = File(...),
db: Session = Depends(get_db), token_data: TokenData = Depends(token_data_depend)): db: Session = Depends(get_db), token_data: TokenData = Depends(token_data_depend)):
if name:
name=b64decode(name.encode('utf-8')).decode('utf-8')
mime_type = file.content_type mime_type = file.content_type
common_type, file_type = file.content_type.split('/') common_type, file_type = file.content_type.split('/')
if common_type not in allow_file_type: if common_type not in allow_file_type:
@ -44,7 +46,7 @@ def file_upload(file: UploadFile = File(...),
else: else:
break break
user_file = FileCrud.add_file(db, user_file = FileCrud.add_file(db,
FileSechemas.UserFileCreate(md=file_md, file_name=file.filename, FileSechemas.UserFileCreate(md=file_md, file_name=name or file.filename,
mime_type=mime_type, mime_type=mime_type,
user_id=token_data.email, common_type=common_type, user_id=token_data.email, common_type=common_type,
file_url=file_url)) file_url=file_url))