使用 fastapi 下载文件

新手上路,请多包涵

在 API 中看到了上传 功能,但我没有看到如何下载。我错过了什么吗?我想为文件下载站点创建一个 API。我应该使用不同的 API 吗?

 from typing import List
from fastapi import FastAPI, Query

app = FastAPI()
PATH "some/path"

@app.get("/shows/")
    def get_items(q: List[str] = Query(None)):
        '''
        Pass path to function.
        Returns folders and files.
        '''

        results = {}

        query_items = {"q": q}
        entry = PATH + "/".join(query_items["q"]) + "/"

        dirs = os.listdir(entry)
        results["folders"] = [val for val in dirs if os.path.isdir(entry+val)]
        results["files"] = [val for val in dirs if os.path.isfile(entry+val)]
        results["path_vars"] = query_items["q"]

        return results

这是 python 获取路径的文件和目录的示例代码,您可以将路径作为列表返回,并在循环中添加新条目以更深入地了解文件树。传递文件名应该会触发下载功能,但我似乎无法下载功能。

原文由 ScipioAfricanus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

这对我有用

from starlette.responses import FileResponse

return FileResponse(file_location, media_type='application/octet-stream',filename=file_name)

这将下载文件名的文件

原文由 Avinash Ravi 发布,翻译遵循 CC BY-SA 4.0 许可协议

由于我们谈论的是 FastAPI,返回文件响应的正确方法包含在 他们的文档 中,代码片段如下:

 from fastapi import FastAPI
from fastapi.responses import FileResponse

file_path = "large-video-file.mp4"
app = FastAPI()

@app.get("/")
def main():
    return FileResponse(path=file_path, filename=file_path, media_type='text/mp4')

原文由 Hamman Samuel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题