Joh*_*ohn 5 python flask dropzone.js
我基本上想在上传后转到不同的页面。这里发生的情况是文件上传速度非常快并保存在服务器上,但之后客户端(我的浏览器)每次都处于等待阶段,等待后甚至没有重定向。如果我删除它,我不会按预期得到任何响应,并且一切都会在几毫秒内发生。
@blah.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST' and 'file' in request.files:
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file.save(os.path.join('./tmp/uploads', filename))
print '%s file saved' % filename
return redirect(url_for("blah.list_uploads"))
return render_template('blah/upload.html')
Run Code Online (Sandbox Code Playgroud)

编辑:不确定说我正在使用 DropzoneJS 是否会有所帮助。我认为默认情况下它使用 Ajax。也许它与那个有关?
更新:现在您可以使用Flask-Dropzone,这是一个将 Dropzone.js 与 Flask 集成的 Flask 扩展。对于这个问题,您可以设置DROPZONE_REDIRECT_VIEW为上传完成后要重定向的视图。
Dropzone 控制上传过程,因此您必须使用 Dropzone 进行重定向(确保 jQuery 已加载)。
创建一个事件监听器,当队列中的所有文件上传完成时,它将重定向页面:
<form action="{{ url_for('upload') }}" class="dropzone" id="my-dropzone" method="POST" enctype="multipart/form-data">
</form>
<script src="{{ url_for('static', filename='js/dropzone.js') }}"></script>
<script src="{{ url_for('static', filename='js/jquery.js') }}"></script>
<script>
Dropzone.autoDiscover = false;
$(function() {
var myDropzone = new Dropzone("#my-dropzone");
myDropzone.on("queuecomplete", function(file) {
// Called when all files in the queue finish uploading.
window.location = "{{ url_for('upload') }}";
});
})
</script>
Run Code Online (Sandbox Code Playgroud)
在视图函数中处理重定向:
import os
from flask import Flask, render_template, request
app = Flask(__name__)
app.config['UPLOADED_PATH'] = os.getcwd() + '/upload'
@app.route('/')
def index():
# render upload page
return render_template('index.html')
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
for f in request.files.getlist('file'):
f.save(os.path.join(app.config['UPLOADED_PATH'], f.filename))
return redirect(url_for('where to redirect'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |