add:前端判断文件大小
add:自定义删除过期文件间隔,修复因间隔过短导致还没下载文件就没了
This commit is contained in:
@@ -39,7 +39,8 @@ async def startup():
|
|||||||
index_html = open('templates/index.html', 'r', encoding='utf-8').read() \
|
index_html = open('templates/index.html', 'r', encoding='utf-8').read() \
|
||||||
.replace('{{title}}', settings.TITLE) \
|
.replace('{{title}}', settings.TITLE) \
|
||||||
.replace('{{description}}', settings.DESCRIPTION) \
|
.replace('{{description}}', settings.DESCRIPTION) \
|
||||||
.replace('{{keywords}}', settings.KEYWORDS)
|
.replace('{{keywords}}', settings.KEYWORDS) \
|
||||||
|
.replace("'{{fileSizeLimit}}'", str(settings.FILE_SIZE_LIMIT))
|
||||||
# 管理页面
|
# 管理页面
|
||||||
admin_html = open('templates/admin.html', 'r', encoding='utf-8').read() \
|
admin_html = open('templates/admin.html', 'r', encoding='utf-8').read() \
|
||||||
.replace('{{title}}', settings.TITLE) \
|
.replace('{{title}}', settings.TITLE) \
|
||||||
@@ -116,7 +117,7 @@ async def index(code: str, ip: str = Depends(error_ip_limit), s: AsyncSession =
|
|||||||
if info.type != 'text':
|
if info.type != 'text':
|
||||||
info.text = f'/select?code={code}'
|
info.text = f'/select?code={code}'
|
||||||
return {
|
return {
|
||||||
'detail': '取件成功,请点击"取"查看',
|
'detail': f'取件成功,文件将在{settings.DELETE_EXPIRE_FILES_INTERVAL}分钟后删除',
|
||||||
'data': {'type': info.type, 'text': info.text, 'name': info.name, 'code': info.code}
|
'data': {'type': info.type, 'text': info.text, 'name': info.name, 'code': info.code}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -104,8 +104,6 @@ DATABASE_URL=sqlite+aiosqlite:///database.db
|
|||||||
DATA_ROOT=./static
|
DATA_ROOT=./static
|
||||||
# 静态文件夹URL
|
# 静态文件夹URL
|
||||||
STATIC_URL=/static
|
STATIC_URL=/static
|
||||||
# 是否开启上传
|
|
||||||
ENABLE_UPLOAD=true
|
|
||||||
# 错误次数
|
# 错误次数
|
||||||
ERROR_COUNT=5
|
ERROR_COUNT=5
|
||||||
# 错误限制分钟数
|
# 错误限制分钟数
|
||||||
@@ -114,6 +112,8 @@ ERROR_MINUTE=10
|
|||||||
UPLOAD_COUNT=60
|
UPLOAD_COUNT=60
|
||||||
# 上传限制分钟数
|
# 上传限制分钟数
|
||||||
UPLOAD_MINUTE=1
|
UPLOAD_MINUTE=1
|
||||||
|
# 删除过期文件的间隔(秒)
|
||||||
|
DELETE_EXPIRE_FILES_INTERVAL=60
|
||||||
# 管理地址
|
# 管理地址
|
||||||
ADMIN_ADDRESS=admin
|
ADMIN_ADDRESS=admin
|
||||||
# 管理密码
|
# 管理密码
|
||||||
|
|||||||
+2
-2
@@ -113,8 +113,6 @@ DATABASE_URL=sqlite+aiosqlite:///database.db
|
|||||||
DATA_ROOT=./static
|
DATA_ROOT=./static
|
||||||
# 静态文件夹URL
|
# 静态文件夹URL
|
||||||
STATIC_URL=/static
|
STATIC_URL=/static
|
||||||
# 是否开启上传
|
|
||||||
ENABLE_UPLOAD=true
|
|
||||||
# 错误次数
|
# 错误次数
|
||||||
ERROR_COUNT=5
|
ERROR_COUNT=5
|
||||||
# 错误限制分钟数
|
# 错误限制分钟数
|
||||||
@@ -123,6 +121,8 @@ ERROR_MINUTE=10
|
|||||||
UPLOAD_COUNT=60
|
UPLOAD_COUNT=60
|
||||||
# 上传限制分钟数
|
# 上传限制分钟数
|
||||||
UPLOAD_MINUTE=1
|
UPLOAD_MINUTE=1
|
||||||
|
# 删除过期文件的间隔(秒)
|
||||||
|
DELETE_EXPIRE_FILES_INTERVAL=60
|
||||||
# 管理地址
|
# 管理地址
|
||||||
ADMIN_ADDRESS=admin
|
ADMIN_ADDRESS=admin
|
||||||
# 管理密码
|
# 管理密码
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ ERROR_MINUTE = config('ERROR_MINUTE', cast=int, default=10)
|
|||||||
UPLOAD_COUNT = config('UPLOAD_COUNT', cast=int, default=60)
|
UPLOAD_COUNT = config('UPLOAD_COUNT', cast=int, default=60)
|
||||||
# 上传限制分钟数
|
# 上传限制分钟数
|
||||||
UPLOAD_MINUTE = config('UPLOAD_MINUTE', cast=int, default=1)
|
UPLOAD_MINUTE = config('UPLOAD_MINUTE', cast=int, default=1)
|
||||||
|
# 删除过期文件的间隔(秒)
|
||||||
|
DELETE_EXPIRE_FILES_INTERVAL = config('DELETE_EXPIRE_FILES_INTERVAL', cast=int, default=10)
|
||||||
# 管理地址
|
# 管理地址
|
||||||
ADMIN_ADDRESS = config('ADMIN_ADDRESS', cast=str, default="admin")
|
ADMIN_ADDRESS = config('ADMIN_ADDRESS', cast=str, default="admin")
|
||||||
# 管理密码
|
# 管理密码
|
||||||
|
|||||||
@@ -102,6 +102,7 @@
|
|||||||
multiple
|
multiple
|
||||||
style="margin: 1rem 0;"
|
style="margin: 1rem 0;"
|
||||||
:data="uploadData"
|
:data="uploadData"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
:headers="{'pwd':pwd}"
|
:headers="{'pwd':pwd}"
|
||||||
:on-success="successUpload"
|
:on-success="successUpload"
|
||||||
:on-error="errorUpload"
|
:on-error="errorUpload"
|
||||||
@@ -195,6 +196,7 @@
|
|||||||
files: [],
|
files: [],
|
||||||
pageNum: 0,
|
pageNum: 0,
|
||||||
inputDisable: false,
|
inputDisable: false,
|
||||||
|
fileSizeLimit: '{{fileSizeLimit}}',
|
||||||
pwd: localStorage.getItem('pwd') || '',
|
pwd: localStorage.getItem('pwd') || '',
|
||||||
uploadData: {
|
uploadData: {
|
||||||
style: '2',
|
style: '2',
|
||||||
@@ -322,6 +324,15 @@
|
|||||||
type: 'error'
|
type: 'error'
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
beforeUpload: function (file) {
|
||||||
|
if (file.size > this.fileSizeLimit) {
|
||||||
|
this.$message({
|
||||||
|
message: `文件大小不能超过${this.fileSizeLimit/1024/1024}MB`,
|
||||||
|
type: 'error'
|
||||||
|
});
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ async def delete_expire_files():
|
|||||||
query = delete(Codes).where(Codes.id.in_(exps_ids))
|
query = delete(Codes).where(Codes.id.in_(exps_ids))
|
||||||
await s.execute(query)
|
await s.execute(query)
|
||||||
await s.commit()
|
await s.commit()
|
||||||
await asyncio.sleep(random.randint(2, 2))
|
await asyncio.sleep(settings.DELETE_EXPIRE_FILES_INTERVAL)
|
||||||
|
|
||||||
|
|
||||||
async def get_code(s: AsyncSession):
|
async def get_code(s: AsyncSession):
|
||||||
|
|||||||
Reference in New Issue
Block a user