Как загрузить файл после отправки данных с помощью FastAPI?Python

Программы на Python
Ответить
Anonymous
 Как загрузить файл после отправки данных с помощью FastAPI?

Сообщение Anonymous »

Я создаю веб-приложение, которое получает текст, преобразует его в речь и возвращает mp3-файл, который сохраняется во временный каталог.
Я хочу иметь такую ​​возможность загрузить файл со страницы html (т. е. из интерфейса), но я не знаю, как это сделать правильно.
Я знаю, что с помощью Flask вы можете это сделать:
from app import app
from flask import Flask, send_file, render_template

@app.route('/')
def upload_form():
return render_template('download.html')

@app.route('/download')
def download_file():
path = "html2pdf.pdf"

return send_file(path, as_attachment=True)

if __name__ == "__main__":
app.run()

Пример HTML:

Python Flask File Download Example
Download a file
Download

Итак, как мне повторить это с помощью FastAPI?
Код FastAPI:
from fastapi import FastAPI, File, Request, Response, UploadFile
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse, HTMLResponse, StreamingResponse
from fastapi.templating import Jinja2Templates
from gtts import gTTS

templates = Jinja2Templates(directory="templates")

def text_to_speech(language:str, text: str) -> str:
tts = gTTS(text=text, lang=language, slow=False)
tts.save("./temp/welcome.mp3")
#os.system("mpg321 /temp/welcome.mp3")
return "Text to speech conversion successful"

@app.get("/")
def home(request: Request):
return templates.TemplateResponse("index.html", {"request": request})

@app.get("/text2speech")
async def home(request: Request):
if request.method == "POST":
form = await request.form()
if form["message"] and form["language"]:
language = form["language"]
text = form["message"]
translate = text_to_speech(language, text)
path = './temp/welcome.mp3'
value = FileResponse("./temp/welcome.mp3", media_type="audio/mp3")
return value
# return templates.TemplateResponse(
# "index.html",
# {"request": request, "message": text, "language": language, "download": value},
# )


Пример HTML-файла:

Download MP3 File
Download a file
Download


Подробнее здесь: https://stackoverflow.com/questions/732 ... ng-fastapi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»