生成代码(python fastapi 文件夹文件列表 html 下载
时间: 2023-12-20 15:03:44 浏览: 126
以下是使用 FastAPI 生成文件夹文件列表并提供 HTML 下载的示例代码:
```python
from fastapi import FastAPI, Response
import os
app = FastAPI()
@app.get("/folder_list")
def get_folder_list(folder_path: str):
"""Get a list of files and folders in a folder"""
# Get a list of files and folders in the provided folder
folder_items = os.listdir(folder_path)
# Create an HTML table with links to each file and folder
table = "<table><tr><th>Name</th><th>Type</th></tr>"
for item in folder_items:
item_path = os.path.join(folder_path, item)
if os.path.isfile(item_path):
item_type = "File"
item_link = f'<a href="/download?file_path={item_path}">Download</a>'
else:
item_type = "Folder"
item_link = f'<a href="/folder_list?folder_path={item_path}">View</a>'
table += f"<tr><td>{item}</td><td>{item_type}</td><td>{item_link}</td></tr>"
table += "</table>"
# Return the HTML table as a downloadable file
response = Response(content=table, media_type='text/html')
response.headers["Content-Disposition"] = f"attachment; filename={os.path.basename(folder_path)}.html"
return response
@app.get("/download")
def download_file(file_path: str):
"""Download a file"""
# Return the file as a downloadable file
return FileResponse(file_path)
```
使用时,可以通过发送 GET 请求到 `/folder_list` 路径并传递文件夹路径来获取该文件夹下的文件列表,并提供一个 HTML 文件作为下载。例如:
```
http://localhost:8000/folder_list?folder_path=/path/to/folder
```
这将返回一个包含文件列表的 HTML 文件,以及一个名为 `filename.html` 的可下载文件。在 HTML 文件中,每个文件和文件夹都会显示其名称、类型和一个链接,链接可用于下载文件或查看文件夹内的内容。
阅读全文