add:前端判断文件大小

add:自定义删除过期文件间隔,修复因间隔过短导致还没下载文件就没了
This commit is contained in:
lan
2022-12-15 16:34:18 +08:00
parent 1f14997e4a
commit 5543811c20
6 changed files with 21 additions and 7 deletions
+3 -2
View File
@@ -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}
} }
+2 -2
View File
@@ -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
View File
@@ -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
# 管理密码 # 管理密码
+2
View File
@@ -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")
# 管理密码 # 管理密码
+11
View File
@@ -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>
+1 -1
View File
@@ -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):