在flask(python)

时间:2017-12-08 10:00:30

标签: python html image flask

对于作业,我们需要创建一个带有flask或django作为后端的网站。我一直在努力并且差不多完成但是我遇到了一个我似乎无法解决的问题。我有用户通过网址或上传提交照片到网站。我会对图像做一些事情,而不是想再次显示图像。但是,在用户关闭显示图像的页面后,我希望图像能够从我的服务器中自动删除。

我正在考虑制作一个临时文件,但是根据我收集的内容,这些只会在文件关闭后被删除。但是因为我必须首先用烧瓶返回模板,所以我不能真正关闭它然后呢?什么是最好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

用户收到文件后,您可以安全地将其删除,并且它仍然在浏览器中。由于在从函数返回后无法将其删除,因此必须先使用变量将其加载到内存中,然后删除该文件,然后返回已加载的图像。这个例子就是这样:

from flask import Flask, send_file
import io
import os
app = Flask(__name__)

@app.route("/image-route.jpg")  # Change this to match your route
def send_my_image():
    image_in_memory = None  # Create variable so it has the correct scope
    # Open file and load it into a BytesIO object which behaves just as if it was a file
    with open('my-file-location.jpg', 'rb') as f:
        image_in_memory = io.BytesIO(f.read())
    # Since we have the image in memory, we can safely remove it
    os.remove('my-file-location.jpg')  
    # Finally, return our BytesIO object as if it was a file
    return send_file(image_in_memory, attachment_filename='my-file.jpg')

app.run()