gpt4 book ai didi

javascript - Dropzone 上传到 Flask 应用后不会重定向

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:33 25 4
gpt4 key购买 nike

我正在编写一个资源,以使用 Dropzone 将文件上传到 Flask 应用程序。文件上传后,应用程序应重定向到 hello world 页面。这没有发生,应用程序卡在上传文件的 View 上。我正在使用 master 的 jQuery 3.1.0 和 Dropzone。

from flask import Flask, request, flash, redirect, url_for render_template)
from validator import Validator

ALLOWED_EXTENSIONS = set(['csv', 'xlsx', 'xls'])

def allowed_file(filename):
return (filename != '') and ('.' in filename) and \
(filename.split('.')[-1] in ALLOWED_EXTENSIONS)

def create_app():
app = Flask(__name__)
app.secret_key = 'super secret key'
return app

app = create_app()

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

@app.route('/world')
def hello_world():
return render_template('hello_world.html')

@app.route('/upload', methods=['POST'])
def upload():
# check that a file with valid name was uploaded
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
if not allowed_file(file.filename):
flash('No selected file')
return redirect(request.url)

# import ipdb; ipdb.set_trace()
validator = Validator(file)
validated = validator.validate()
if validated:
flash('Success')
else:
flash('Invalid file')
return redirect(url_for('hello_world'))

if __name__ == '__main__':
app.run(debug=True)
{% extends "base.html" %}

{% block head %}
<link href="/static/css/dropzone.css" rel="stylesheet">
<script src="/static/js/dropzone.js"></script>
{% endblock %}
{% block body %}
<main>
<section>
<div id="dropzone">
<form action="upload" method="post" class="dropzone dz-clickable" id="demo-upload" multiple>
<div class="dz-message">
Drop files here or click to upload.
</div>
</form>
</div>
</section>
</main>
{% endblock %}

最佳答案

我在我的 Flask 应用程序中遇到了类似的问题,我用以下 jQuery 函数解决了它:

Dropzone.options.myDropzone = {

autoProcessQueue: false,

init: function() {
var submitButton = document.querySelector("#upload-button");
myDropzone = this;

submitButton.addEventListener("click", function() {
myDropzone.processQueue();
});

this.on("sending", function() {
$("#myDropzone").submit()
});
}
};

参数“sending”在文件发送之前被调用,这样我就可以提交我的拖放区表单。有了这个,我的 flask 应用程序中的所有重定向都可以正常工作。

为清楚起见,我的 html 代码片段:

<form action="/" method="POST" class="dropzone" id="myDropzone" enctype="multipart/form-data">

</form>

关于javascript - Dropzone 上传到 Flask 应用后不会重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621273/

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