add:新增永久保存,但是会永久占用一个码,问题待解决
This commit is contained in:
@@ -176,11 +176,14 @@ async def get_file(code: str, token: str, ip: str = Depends(error_ip_limit), s:
|
|||||||
async def share(background_tasks: BackgroundTasks, text: str = Form(default=None),
|
async def share(background_tasks: BackgroundTasks, text: str = Form(default=None),
|
||||||
style: str = Form(default='2'), value: int = Form(default=1), file: UploadFile = File(default=None),
|
style: str = Form(default='2'), value: int = Form(default=1), file: UploadFile = File(default=None),
|
||||||
ip: str = Depends(upload_ip_limit), s: AsyncSession = Depends(get_session)):
|
ip: str = Depends(upload_ip_limit), s: AsyncSession = Depends(get_session)):
|
||||||
code = await get_code(s)
|
|
||||||
if style == '2':
|
if style == '2':
|
||||||
if value > settings.MAX_DAYS:
|
if value > settings.MAX_DAYS:
|
||||||
raise HTTPException(status_code=400, detail=f"最大有效天数为{settings.MAX_DAYS}天")
|
raise HTTPException(status_code=400, detail=f"最大有效天数为{settings.MAX_DAYS}天")
|
||||||
exp_time = datetime.datetime.now() + datetime.timedelta(days=value)
|
# 如果天数大于0,就设置过期时间,否则就设置为永久,无过期时间
|
||||||
|
if settings.ENABLE_PERMANENT and value < 0:
|
||||||
|
exp_time = None
|
||||||
|
else:
|
||||||
|
exp_time = datetime.datetime.now() + datetime.timedelta(days=value)
|
||||||
exp_count = -1
|
exp_count = -1
|
||||||
elif style == '1':
|
elif style == '1':
|
||||||
if value < 1:
|
if value < 1:
|
||||||
@@ -199,6 +202,7 @@ async def share(background_tasks: BackgroundTasks, text: str = Form(default=None
|
|||||||
background_tasks.add_task(storage.save_file, file, _text)
|
background_tasks.add_task(storage.save_file, file, _text)
|
||||||
else:
|
else:
|
||||||
size, _text, _type, name = len(text), text, 'text', '文本分享'
|
size, _text, _type, name = len(text), text, 'text', '文本分享'
|
||||||
|
code = await get_code(s)
|
||||||
s.add(Codes(code=code, text=_text, size=size, type=_type, name=name, count=exp_count, exp_time=exp_time, key=key))
|
s.add(Codes(code=code, text=_text, size=size, type=_type, name=name, count=exp_count, exp_time=exp_time, key=key))
|
||||||
await s.commit()
|
await s.commit()
|
||||||
upload_ip_limit.add_ip(ip)
|
upload_ip_limit.add_ip(ip)
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,6 @@
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from starlette.config import Config
|
from starlette.config import Config
|
||||||
import configparser
|
|
||||||
|
|
||||||
# 配置文件.env,存放为data/.env
|
# 配置文件.env,存放为data/.env
|
||||||
config = Config("data/.env")
|
config = Config("data/.env")
|
||||||
@@ -32,6 +31,8 @@ class Settings:
|
|||||||
ERROR_MINUTE = config('ERROR_MINUTE', cast=int, default=10)
|
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)
|
||||||
|
# 是否允许永久保存
|
||||||
|
ENABLE_PERMANENT = config('ENABLE_PERMANENT', cast=bool, default=True)
|
||||||
# 上传限制分钟数
|
# 上传限制分钟数
|
||||||
UPLOAD_MINUTE = config('UPLOAD_MINUTE', cast=int, default=1)
|
UPLOAD_MINUTE = config('UPLOAD_MINUTE', cast=int, default=1)
|
||||||
# 删除过期文件的间隔(分钟)
|
# 删除过期文件的间隔(分钟)
|
||||||
|
|||||||
@@ -43,7 +43,8 @@
|
|||||||
<div>取件码:${ file.code }</div>
|
<div>取件码:${ file.code }</div>
|
||||||
<div>文件名:${ file.name }</div>
|
<div>文件名:${ file.name }</div>
|
||||||
<div>次 数:${ file.count }</div>
|
<div>次 数:${ file.count }</div>
|
||||||
<div>到 期:${ file.exp_time.slice(0,19) }</div>
|
<div v-if="file.exp_time">到 期:${ file.exp_time.slice(0,19) }</div>
|
||||||
|
<div v-else>到 期:永不过期</div>
|
||||||
<div v-if="file.name==='文本分享'">
|
<div v-if="file.name==='文本分享'">
|
||||||
<span style="white-space: pre-line">内 容:${ file.text }</span>
|
<span style="white-space: pre-line">内 容:${ file.text }</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+12
-9
@@ -138,15 +138,18 @@
|
|||||||
</el-carousel>
|
</el-carousel>
|
||||||
</div>
|
</div>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-input style="width: 190px" placeholder="数量" v-model="uploadData.value"
|
<el-tooltip class="item" effect="dark" content="天数为-1则为永久" placement="top">
|
||||||
class="input-with-select">
|
<el-input style="width: 190px" placeholder="数量" v-model="uploadData.value"
|
||||||
<el-select style="width: 75px" v-model="uploadData.style" slot="prepend" placeholder="请选择">
|
class="input-with-select">
|
||||||
<el-option label="天数" value="2"></el-option>
|
<el-select style="width: 75px" v-model="uploadData.style" slot="prepend"
|
||||||
<el-option label="次数" value="1"></el-option>
|
placeholder="请选择">
|
||||||
</el-select>
|
<el-option label="天数" value="2"></el-option>
|
||||||
<el-button v-if="uploadData.style === '1'" slot="append" disabled>次</el-button>
|
<el-option label="次数" value="1"></el-option>
|
||||||
<el-button v-else slot="append" disabled>天</el-button>
|
</el-select>
|
||||||
</el-input>
|
<el-button v-if="uploadData.style === '1'" slot="append" disabled>次</el-button>
|
||||||
|
<el-button v-else slot="append" disabled>天</el-button>
|
||||||
|
</el-input>
|
||||||
|
</el-tooltip>
|
||||||
<el-radio-group style="margin-left: 18px" v-model="uploadData.type">
|
<el-radio-group style="margin-left: 18px" v-model="uploadData.type">
|
||||||
<el-radio label="1">
|
<el-radio label="1">
|
||||||
文件
|
文件
|
||||||
|
|||||||
Reference in New Issue
Block a user