gpt4 book ai didi

javascript - 使用 flask 发送文件并返回数据而不刷新 html 页面

转载 作者:行者123 更新时间:2023-11-30 14:38:22 24 4
gpt4 key购买 nike

我正在开发一个网络应用程序,它接受灰度输入并使用机器学习返回该图像的彩色版本。为此,该网络应用程序带有一个 python 后端,使用 Flask 微框架链接前端 html 页面。
我正在发送我选择在 python 中处理的图像,然后返回图像名称以从其目录中显示它。我的问题是如何在不重新加载 html 页面的情况下使之前的操作发生?

最佳答案

我做了一个最小的工作示例,它完全符合您的要求:

from flask import Flask, render_template_string, request, jsonify, url_for
import os
from werkzeug.utils import secure_filename

if not os.path.isdir("/static"): # just for this example
os.makedirs("/static")

app = Flask(__name__)


@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
file = request.files['file']
fname = secure_filename(file.filename)
file.save('static/' + fname)
# do the processing here and save the new file in static/
fname_after_processing = fname
return jsonify({'result_image_location': url_for('static', filename=fname_after_processing)})

return render_template_string('''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" name="fileinfo">
<label>Some user provided information</label>
<input type="text" name="some_info" size="12" maxlength="32" /><br />
<label>File to upload:</label>
<input type="file" name="file" required />
<input type="submit" value="Upload the file!" />
</form>
<img id="resultimg" scr="">
<div></div>
<script>
var form = document.forms.namedItem("fileinfo");
form.addEventListener('submit', function(ev) {
var oData = new FormData(form);
var oReq = new XMLHttpRequest();
oReq.open("POST", "{{url_for('index')}}", true);
oReq.onload = function(oEvent) {
if (oReq.status == 200) {
document.getElementById('resultimg').setAttribute('src', JSON.parse(oReq.responseText).result_image_location);
} else {
alert("Error " + oReq.status + " occurred when trying to upload your file")
}
};
oReq.send(oData);
ev.preventDefault();
}, false);
</script>
</body>
</html>
''')


app.run()

我不会检查文件扩展名或覆盖文件,因此您应该更加保护此功能。但是基本的基础设施就在那里。

关于javascript - 使用 flask 发送文件并返回数据而不刷新 html 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50069199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com