delete file from disk
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
|
import threading
|
||||||
from fastapi import FastAPI, Depends, UploadFile, Form, File
|
from fastapi import FastAPI, Depends, UploadFile, Form, File
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from starlette.requests import Request
|
from starlette.requests import Request
|
||||||
@@ -33,6 +33,11 @@ admin_password = 'admin'
|
|||||||
error_ip_count = {}
|
error_ip_count = {}
|
||||||
|
|
||||||
|
|
||||||
|
def delete_file(files):
|
||||||
|
for file in files:
|
||||||
|
os.remove('.' + file)
|
||||||
|
|
||||||
|
|
||||||
def get_db():
|
def get_db():
|
||||||
db = SessionLocal()
|
db = SessionLocal()
|
||||||
try:
|
try:
|
||||||
@@ -79,7 +84,7 @@ async def admin_delete(request: Request, code: str, db: Session = Depends(get_db
|
|||||||
if request.headers.get('pwd') == admin_password:
|
if request.headers.get('pwd') == admin_password:
|
||||||
file = db.query(database.Codes).filter(database.Codes.code == code)
|
file = db.query(database.Codes).filter(database.Codes.code == code)
|
||||||
if file.first().type != 'text/plain':
|
if file.first().type != 'text/plain':
|
||||||
os.remove('.' + file.first().text)
|
threading.Thread(target=delete_file, args=([file.first().text],)).start()
|
||||||
file.delete()
|
file.delete()
|
||||||
db.commit()
|
db.commit()
|
||||||
return {'code': 200, 'msg': '删除成功'}
|
return {'code': 200, 'msg': '删除成功'}
|
||||||
@@ -113,7 +118,9 @@ async def index(request: Request, code: str, db: Session = Depends(get_db)):
|
|||||||
@app.post('/share')
|
@app.post('/share')
|
||||||
async def share(text: str = Form(default=None), file: UploadFile = File(default=None), db: Session = Depends(get_db)):
|
async def share(text: str = Form(default=None), file: UploadFile = File(default=None), db: Session = Depends(get_db)):
|
||||||
cutoff_time = datetime.datetime.now() - datetime.timedelta(hours=exp_hour)
|
cutoff_time = datetime.datetime.now() - datetime.timedelta(hours=exp_hour)
|
||||||
db.query(database.Codes).filter(database.Codes.use_time < cutoff_time).delete()
|
olds = db.query(database.Codes).filter(database.Codes.use_time < cutoff_time)
|
||||||
|
threading.Thread(target=delete_file, args=([old.text for old in olds if old.type != 'text/plain'],)).start()
|
||||||
|
olds.delete()
|
||||||
db.commit()
|
db.commit()
|
||||||
code = get_code(db)
|
code = get_code(db)
|
||||||
if text:
|
if text:
|
||||||
|
|||||||
Reference in New Issue
Block a user