要求:
我的 html 页面中有一个表单,我们可以在其中上传文件并发布它们。发布文件后,我希望将其保存在后端,然后单击即可进入我的应用程序的下一页。
我的用于提交/发布此表单的 JavaScript 代码。
submitButton.addEventListener("click", function(event) {
event.preventDefault();
var formData = new FormData(form);
var redirect_url = '{{ url_for("UploadLoads") }}?link=' + link;
fetch(redirect_url , {
method: 'POST',
body: formData
})
.then(response => {
const contentType = response.headers.get("content-type");
if (contentType && contentType.includes("application/json")) {
return response.json().then(data => {
throw new Error(data.message); }
else {
throw new Error("Unknown error occurred");
}
})
.then(data => {
window.location.href = link;
})
.catch(error => {
console.error('Error:', error);
});
window.location.href = link;
});
烧瓶代码:
@app.route('/loadsupload', methods=['POST'])
def UploadLoads():
if request.method=='POST':
link = request.args.get('link')
if "date_time" not in session or session["date_time"] == None:
session["date_time"] = datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
if session["date_time"] not in os.listdir(get_session_data("user_dir")):
os.mkdir(get_session_data("session_dir"))
description=[]
for i in range(1,len(request.files)+1):
file = request.files.get(f'file{i}')
if file:
filename = os.path.join(get_session_data("session_dir"), f'file{i}.xlsx')
file.save(filename)
text = request.form.get(f'description{i}', '')
description.append(text)
session['Optitower load description']=description
session['Optitower load family']=request.form['family']
return jsonify({'redirect': link}), 200
@app.route('/CoverForm/<path:variable>', methods=['GET', 'POST'])
@UserPathChecks(check_name = "User Session")
# @GetTime(name="Cover Form Without Userpath", level=" Coverform ")
def CoverForm(variable):
tenders = None
try:
tenders = tender_data()
except:
print("not able to fetch tenders")
...............................................
逻辑解释
我正在使用UploadLoads()函数来获取上传的文件并将其保存到后端。 link 变量具有 url 路径,我希望在退出 UploadLoads() 函数后立即转到该路径,这意味着一旦保存我的文件,我希望我的应用程序转到“link”变量指定的下一页。 链接示例 链接=“CoverForm/”+brd+“/”+url
我面临的问题
有时,如果单击提交按钮,此上传加载就会被激活,并且我的文件会按照我想要的方式保存,但页面不会继续前进。第二次点击提交按钮时,页面向前移动,跳过文件保存功能。因此,我最终在后端得到两个文件夹,第一个文件夹包含文件,第二个文件夹包含其他数据。我希望只需单击一次即可保存文件和下一页