Я пытаюсь загрузить файл, когда пользователь нажимает определенную кнопку. Этот файл представляет собой изображение, которое создается при нажатии указанной кнопки. Я хочу, чтобы изображение автоматически загружалось на клиентское устройство.
Я использую Flask в коде сервера, и в идеале функция send_file
из Flask должна запускать эту автоматическую загрузку, поскольку она добавляет заголовок Content-Disposition
.
На стороне клиента у меня есть код JS, который использует API-интерфейс fetch для отправки POST-запроса на сервер с некоторыми данными, которые используются для создания изображения, которое необходимо загрузить.
Это код JS:
function make_image(text){
const json={
text: text
};
const options={
method: "POST",
body: JSON.stringify(json),
headers:{
'Content-Type':'application/json',
}
};
fetch('/image',options)
.then(res=>{
res.json(); //Gives an error: Uncaught (in promise) SyntaxError: Unexpected token � in JSON at position 0
}).catch(err=>console.log(err));
}
А это код Python на сервере:
@app.route('/image',methods=['POST'])
def generate_image():
cont = request.get_json()
t=cont['text']
print(cont['text'])
name = pic.create_image(t)
time.sleep(2)
return send_file(f"{name}.png",as_attachment=True,mimetype="image/png")
Но ничего не происходит. Изображение не загружается. Однако образ создается на сервере и не поврежден
Как мне решить эту проблему? И есть ли другой способ сделать то, что я пытаюсь сделать?