add:后台分享本地文件

This commit is contained in:
lan
2023-01-16 18:50:46 +08:00
parent df18c6ce0b
commit 315cedd0c4
2 changed files with 10 additions and 4 deletions
+8 -4
View File
@@ -18,9 +18,13 @@ from core.database import init_models, Options, Codes, get_session
app = FastAPI(debug=settings.DEBUG, docs_url=None, redoc_url=None)
# 数据存储文件夹
DATA_ROOT = Path(settings.DATA_ROOT + '/files')
DATA_ROOT = Path(settings.DATA_ROOT)
if not DATA_ROOT.exists():
DATA_ROOT.mkdir(parents=True)
# 本地文件文件夹
LOCAL_ROOT = Path(settings.LOCAL_ROOT)
if not LOCAL_ROOT.exists():
LOCAL_ROOT.mkdir(parents=True)
# 静态文件夹,这个固定就行了,静态资源都放在这里
app.mount('/static', StaticFiles(directory='./static'), name="static")
@@ -57,7 +61,7 @@ async def admin():
@app.get(f'/{settings.ADMIN_ADDRESS}/files', dependencies=[Depends(admin_required)])
async def get_files():
files = []
for i, j, k in os.walk(f'{DATA_ROOT}'):
for i, j, k in os.walk(f'{LOCAL_ROOT}'):
files.extend([{'name': _.split('/')[-1], 'path': i} for _ in k])
return {'data': files}
@@ -68,12 +72,12 @@ async def share_file(name=Form(...), path=File(...), s: AsyncSession = Depends(g
key = uuid.uuid4().hex
code = await get_code(s)
now = datetime.datetime.now()
path = f"{settings.DATA_ROOT}/upload/{now.year}/{now.month}/{now.day}/"
path = f"{settings.LOCAL_ROOT}/upload/{now.year}/{now.month}/{now.day}/"
if not os.path.exists(path):
os.makedirs(path)
text = f"{path}/{f'{key}{name}'}"
exp_time = datetime.datetime.now() + datetime.timedelta(days=1)
s.add(Codes(code=code, text=text.replace(f'{settings.DATA_ROOT}/', ''), type='file', name=name, count=-1,
s.add(Codes(code=code, text=text.replace(f'{settings.LOCAL_ROOT}/', ''), type='file', name=name, count=-1,
exp_time=exp_time, key=key))
await s.commit()
shutil.move(file_path, text)
+2
View File
@@ -19,6 +19,8 @@ class Settings:
DATABASE_URL = config('DATABASE_URL', cast=str, default=f"sqlite+aiosqlite:///{DATABASE_FILE}")
# 数据存储文件夹,文件就不暴露在静态资源里面了
DATA_ROOT = './data/' + config('DATA_ROOT', cast=str, default=f"static")
# 本地文件夹
LOCAL_ROOT = './data/' + config('LOCAL_ROOT', cast=str, default=f"local")
# 静态文件夹URL
STATIC_URL = config('STATIC_URL', cast=str, default="/static")
# 开启上传