完善文档,以及docker新增文件夹映射

This commit is contained in:
lan-air
2022-12-11 22:35:10 +08:00
parent 4aa9ef55e2
commit 257cbf6685
4 changed files with 43 additions and 20 deletions
+8 -13
View File
@@ -30,9 +30,9 @@ app.mount(STATIC_URL, StaticFiles(directory=DATA_ROOT), name="static")
@app.on_event('startup')
async def startup():
await init_models()
asyncio.create_task(delete_expire_files())
index_html = open('templates/index.html', 'r', encoding='utf-8').read() \
.replace('{{title}}', settings.TITLE) \
.replace('{{description}}', settings.DESCRIPTION) \
@@ -48,7 +48,7 @@ error_ip_count = {}
def delete_file(files):
for file in files:
if file['type'] != 'text':
os.remove(DATA_ROOT / file['text'].lstrip(STATIC_URL+'/'))
os.remove(DATA_ROOT / file['text'].lstrip(STATIC_URL + '/'))
async def delete_expire_files():
@@ -57,12 +57,10 @@ async def delete_expire_files():
query = select(Codes).where(or_(Codes.exp_time < datetime.datetime.now(), Codes.count == 0))
exps = (await s.execute(query)).scalars().all()
await asyncio.to_thread(delete_file, [{'type': old.type, 'text': old.text} for old in exps])
exps_ids = [exp.id for exp in exps]
query = delete(Codes).where(Codes.id.in_(exps_ids))
await s.execute(query)
await s.commit()
await asyncio.sleep(random.randint(60, 300))
@@ -73,12 +71,8 @@ async def get_code(s: AsyncSession):
return str(code)
def get_file_name(key, ext, file):
def get_file_name(key, ext, file, file_bytes):
now = datetime.datetime.now()
file_bytes = file.file.read()
size = len(file_bytes)
if size > settings.FILE_SIZE_LIMIT:
return size, '', '', ''
path = DATA_ROOT / f"upload/{now.year}/{now.month}/{now.day}/"
name = f'{key}.{ext}'
if not path.exists():
@@ -86,7 +80,7 @@ def get_file_name(key, ext, file):
filepath = path / name
with open(filepath, 'wb') as f:
f.write(file_bytes)
return size, f"{STATIC_URL}/{filepath.relative_to(DATA_ROOT)}", file.content_type, file.filename
return f"{STATIC_URL}/{filepath.relative_to(DATA_ROOT)}", file.content_type, file.filename
@app.get(f'/{settings.ADMIN_ADDRESS}')
@@ -148,7 +142,7 @@ async def get_file(code: str, s: AsyncSession = Depends(get_session)):
if info.type == 'text':
return {'code': code, 'msg': '查询成功', 'data': info.text}
else:
return FileResponse(DATA_ROOT / info.text.lstrip(STATIC_URL+'/'), filename=info.name)
return FileResponse(DATA_ROOT / info.text.lstrip(STATIC_URL + '/'), filename=info.name)
else:
return {'code': 404, 'msg': '口令不存在'}
@@ -173,7 +167,6 @@ async def index(request: Request, code: str, s: AsyncSession = Depends(get_sessi
await s.commit()
if info.type != 'text':
info.text = f'/select?code={code}'
return {
'code': 200,
'msg': '取件成功,请点击""查看',
@@ -200,9 +193,11 @@ async def share(text: str = Form(default=None), style: str = Form(default='2'),
exp_count = -1
key = uuid.uuid4().hex
if file:
size, _text, _type, name = get_file_name(key, file.filename.split('.')[-1], file)
file_bytes = file.file.read()
size = len(file_bytes)
if size > settings.FILE_SIZE_LIMIT:
return {'code': 404, 'msg': '文件过大'}
_text, _type, name = get_file_name(key, file.filename.split('.')[-1], file, file_bytes)
else:
size, _text, _type, name = len(text), text, 'text', '文本分享'
info = Codes(