烧瓶/Python:@after_this_request 未被访问
Posted
技术标签:
【中文标题】烧瓶/Python:@after_this_request 未被访问【英文标题】:Flask / Python: @after_this_request is not accessed 【发布时间】:2021-12-15 19:21:41 【问题描述】:我试图删除我在网络服务上显示后创建的文件。 但是,对于该函数的当前位置,它显示“未访问 remove_file(response)”,当我运行 web 服务时,输出文件时出现错误,因为它显然已被删除。
我不知道该怎么办了,我尝试将 afer_this_request 函数放在 upload_file 声明之后,在返回渲染模板之后,所有这些都不起作用。我快疯了,所以任何帮助都会让我度过愉快的一年!
@app.route('/', methods=['POST', 'GET'])
def upload_file():
if request.method == 'POST':
myuuid = uuid.uuid4()
# check if the post request has the file part
if 'file' not in request.files:
return render_template('error.html')
file = request.files['file']
# If the user does not select a file, the browser submits an
# empty file without a filename.
if file.filename == '':
return render_template('error.html')
if file and allowed_file(file.filename):
sfilename = secure_filename(file.filename)
if not os.path.exists(app.config['UPLOAD_FOLDER']):
os.mkdir(app.config['UPLOAD_FOLDER'])
output_path = os.path.join(app.config['UPLOAD_FOLDER'], sfilename)
file.save(output_path)
if 'Alpha Miner' in request.form:
Alpha(pro_file, myuuid)
img_url = url_for('static', filename=str(myuuid) + '.gv.svg')
@after_this_request
def remove_file(response):
os.remove(img_url)
return response
titel = "Petri Net for Alpha Miner: " + sfilename
return render_template('upload.html', img_url=img_url, titel = title)
【问题讨论】:
不是吗?我用烧瓶导入它:flask.palletsprojects.com/en/2.0.x/api/… 【参考方案1】:试试这个:
file_handle = open(img_url, 'r')
@after_this_request
def remove_file(response):
try:
os.remove(img_url)
file_handle.close()
except Exception as error:
app.logger.error("Error removing or closing downloaded file handle", error)
return response
【讨论】:
悲哀地不起作用:(当我将 file_handle 或 img_url 作为参数放入渲染模板时,我仍然收到 filenotfound 错误 请看这个:***.com/questions/24612366/…,这个链接有很好的答案,希望对你有帮助 建议您阅读“流文件,然后删除”部分@icbidt1018以上是关于烧瓶/Python:@after_this_request 未被访问的主要内容,如果未能解决你的问题,请参考以下文章