首页 > 解决方案 > Django 单例文件 API

问题描述

我正在尝试创建一种“缓存”,其中 API 将文件上传到缓存,并且每当上传新文件时,它将替换缓存中的当前文件。一次只能保存一个文件,我可以在需要时清除缓存。我不确定如何实现通过 API 上传到的单例模型。任何指针表示赞赏。

标签: pythondjangoapicachingsingleton

解决方案


例如,如果您使用 redis 进行缓存。它可以如下:

import redis
from django.http import FileResponse

r = redis.StrictRedis()
CACHING_FILE_KEY = 'something like this'
CACHING_FILE_NAME_KEY = 'something like that'

def upload(request):
    file = request.FILES["file"]
    filename = file.name
    content = b"".join(i for i in file.chunks())
    r.set(CACHING_FILE_KEY, content)
    r.set(CACHING_FILE_NAME_KEY, filename)
    return HttpResponse('ok')

def download(request):
    content = r.get(CACHING_FILE_KEY)
    filename = r.get(CACHING_FILE_NAME_KEY)
    response = FileResponse(content)
    response["Content-Type"] = "text/plain"
    response["Content-Length"] = len(content)
    response["Content-Disposition"] = f'attachment; filename={filename!r}'
    return response

推荐阅读