Skip to content

Commit 964d091

Browse files
author
Lan
committed
feat: 新增存储路径自定义,修复s3存储未删除文件#246
1 parent 7ca840c commit 964d091

21 files changed

+52
-43
lines changed

apps/base/utils.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,19 @@
1313
async def get_file_path_name(file: UploadFile) -> Tuple[str, str, str, str, str]:
1414
"""获取文件路径和文件名"""
1515
today = datetime.datetime.now()
16-
path = f"share/data/{today.strftime('%Y/%m/%d')}"
17-
prefix, suffix = os.path.splitext(file.filename)
16+
storage_path = settings.storage_path.strip('/') # 移除开头和结尾的斜杠
1817
file_uuid = uuid.uuid4().hex
19-
uuid_file_name = f"{file_uuid}{suffix}"
20-
save_path = f"{path}/{uuid_file_name}"
21-
return path, suffix, prefix, uuid_file_name, save_path
18+
19+
# 使用 UUID 作为子目录名
20+
base_path = f"share/data/{today.strftime('%Y/%m/%d')}/{file_uuid}"
21+
22+
# 如果设置了存储路径,将其添加到基础路径中
23+
path = f"{storage_path}/{base_path}" if storage_path else base_path
24+
25+
prefix, suffix = os.path.splitext(file.filename)
26+
# 保持原始文件名
27+
save_path = f"{path}/{file.filename}"
28+
return path, suffix, prefix, file.filename, save_path
2229

2330

2431
async def get_expire_info(expire_value: int, expire_style: str) -> Tuple[Optional[datetime.datetime], int, int, str]:

core/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
DEFAULT_CONFIG = {
1414
'file_storage': 'local',
15+
'storage_path': '',
1516
'name': '文件快递柜 - FileCodeBox',
1617
'description': '开箱即用的文件快传系统',
1718
'notify_title': '系统通知',

core/tasks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
async def delete_expire_files():
1818
file_storage: FileStorageInterface = storages[settings.file_storage]()
19+
print(settings.file_storage)
1920
while True:
2021
try:
2122
# 遍历 share目录下的所有文件夹,删除空的文件夹,并判断父目录是否为空,如果为空也删除

main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ async def lifespan(app: FastAPI):
3939
# 初始化数据库
4040
await init_db()
4141

42-
# 启动后台任务
43-
task = asyncio.create_task(delete_expire_files())
44-
4542
# 加载配置
4643
await load_config()
4744
app.mount('/assets', StaticFiles(directory=f'./{settings.themesSelect}/assets'), name="assets")
4845

46+
# 启动后台任务
47+
task = asyncio.create_task(delete_expire_files())
48+
4949
try:
5050
yield
5151
finally:

themes/2024/assets/AdminLayout-CYVTuRyJ.js renamed to themes/2024/assets/AdminLayout-CGK4cUFs.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

themes/2024/assets/DashboardView-hfXRelMZ.js renamed to themes/2024/assets/DashboardView-BJPa45w6.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

themes/2024/assets/FileManageView-BpHyAu06.js renamed to themes/2024/assets/FileManageView-5nbkRxSF.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

themes/2024/assets/LoginView-zsYUSR2Y.js renamed to themes/2024/assets/LoginView-B7G0ZQAI.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

themes/2024/assets/RetrievewFileView-B9XfNvQg.js renamed to themes/2024/assets/RetrievewFileView-DExKIrRO.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

themes/2024/assets/SendFileView-Ca-fZPSX.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)