Sci*_*nus 11 python python-3.x
我正在查看这个,我看到了在 API 中上传的功能?https://fastapi.tiangolo.com/tutorial/request-files/没有选择 dl .. 我错过了什么吗?我希望为文件下载站点创建一个 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
Run Code Online (Sandbox Code Playgroud)
这是python获取路径的文件和目录的示例代码,您可以将路径作为列表返回,并在循环中添加新条目以深入了解文件树。传递文件名应该会触发下载功能,但我似乎无法启动下载功能。
Ham*_*uel 32
由于我们正在讨论 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')
Run Code Online (Sandbox Code Playgroud)
小智 18
这对我有用
from starlette.responses import FileResponse
return FileResponse(file_location, media_type='application/octet-stream',filename=file_name)
Run Code Online (Sandbox Code Playgroud)
这将下载带有文件名的文件
FastAPI 使用 Starlette 的 FileResponse 类,因此有两种方法可以导入FileResponseAPI 代码。但当然从 FastAPI 导入会是更好的选择。您可以按照以下方法启用 API 端点支持文件下载。
不要忘记添加aiofiles到您的依赖项列表中。一个基本requirements.txt文件应该是这样的(模块的版本可能会随着时间的推移而改变,fastapi 的 0.63.0 版本严格使用 starlette 0.13.6)
uvicorn==0.13.4
fastapi==0.63.0
starlette==0.13.6
aiofiles==0.6.0
Run Code Online (Sandbox Code Playgroud)
以及API代码
import os
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get("/")
async def main():
file_name = "FILE NAME"
# DEPENDS ON WHERE YOUR FILE LOCATES
file_path = os.getcwd() + "/" + file_name
return FileResponse(path=file_path, media_type='application/octet-stream', filename=file_name)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11728 次 |
| 最近记录: |