背景
最近要用 Fastapi 框架简单实现一个文件下载接口,需要临时创建一个目录,将需要下载的文件打包为 zip 文件,返回给前端后,需要把这个 zip 文件删除。一开始我想到了两个思路:1. 维护一个定时器,定时去删除。2. 创建临时文件夹,接口返回后自动清理掉这个文件夹。
对比当然选择第二个方案,因为实现比较简单。
简单 demo 实现如下:
import os
import tempfile
import zipfile
import uvicorn
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get("/file/download")
async def file_download():
base_dir = os.path.dirname(__file__)
# Create temp dir
tmp_dir_obj = tempfile.TemporaryDirectory(dir=base_dir)
tmp_dirname = tmp_dir_obj.name