add:后台分享本地文件
This commit is contained in:
@@ -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)
|
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():
|
if not DATA_ROOT.exists():
|
||||||
DATA_ROOT.mkdir(parents=True)
|
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")
|
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)])
|
@app.get(f'/{settings.ADMIN_ADDRESS}/files', dependencies=[Depends(admin_required)])
|
||||||
async def get_files():
|
async def get_files():
|
||||||
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])
|
files.extend([{'name': _.split('/')[-1], 'path': i} for _ in k])
|
||||||
return {'data': files}
|
return {'data': files}
|
||||||
|
|
||||||
@@ -68,12 +72,12 @@ async def share_file(name=Form(...), path=File(...), s: AsyncSession = Depends(g
|
|||||||
key = uuid.uuid4().hex
|
key = uuid.uuid4().hex
|
||||||
code = await get_code(s)
|
code = await get_code(s)
|
||||||
now = datetime.datetime.now()
|
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):
|
if not os.path.exists(path):
|
||||||
os.makedirs(path)
|
os.makedirs(path)
|
||||||
text = f"{path}/{f'{key}{name}'}"
|
text = f"{path}/{f'{key}{name}'}"
|
||||||
exp_time = datetime.datetime.now() + datetime.timedelta(days=1)
|
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))
|
exp_time=exp_time, key=key))
|
||||||
await s.commit()
|
await s.commit()
|
||||||
shutil.move(file_path, text)
|
shutil.move(file_path, text)
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ class Settings:
|
|||||||
DATABASE_URL = config('DATABASE_URL', cast=str, default=f"sqlite+aiosqlite:///{DATABASE_FILE}")
|
DATABASE_URL = config('DATABASE_URL', cast=str, default=f"sqlite+aiosqlite:///{DATABASE_FILE}")
|
||||||
# 数据存储文件夹,文件就不暴露在静态资源里面了
|
# 数据存储文件夹,文件就不暴露在静态资源里面了
|
||||||
DATA_ROOT = './data/' + config('DATA_ROOT', cast=str, default=f"static")
|
DATA_ROOT = './data/' + config('DATA_ROOT', cast=str, default=f"static")
|
||||||
|
# 本地文件夹
|
||||||
|
LOCAL_ROOT = './data/' + config('LOCAL_ROOT', cast=str, default=f"local")
|
||||||
# 静态文件夹URL
|
# 静态文件夹URL
|
||||||
STATIC_URL = config('STATIC_URL', cast=str, default="/static")
|
STATIC_URL = config('STATIC_URL', cast=str, default="/static")
|
||||||
# 开启上传
|
# 开启上传
|
||||||
|
|||||||
Reference in New Issue
Block a user