如何使用JavaScript实现文件上传进度条 - 代码示例
要在文件上传时显示进度条,你可以使用JavaScript的'XMLHttpRequest'对象来发送文件上传请求,并使用'onprogress'事件来获取上传进度。
以下是一个使用AJAX实现文件上传进度的示例代码:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload():
if 'file' not in request.files:
alert_message = 'No file selected'
return '''
<script>
alert('{}');
window.location.href = '/';
</script>
'''.format(alert_message)
file = request.files['file']
if file.filename == '':
alert_message = 'No file selected'
return '''
<script>
alert('{}');
window.location.href = '/';
</script>
'''.format(alert_message)
# 在这里可以处理上传的文件,比如保存到指定的目录
file.save('uploads/' + file.filename)
alert_message = 'File uploaded successfully'
return '''
<script>
alert('{}');
window.location.href = '/';
</script>
'''.format(alert_message)
@app.route('/upload_with_progress', methods=['POST'])
def upload_with_progress():
if 'file' not in request.files:
return 'No file selected'
file = request.files['file']
if file.filename == '':
return 'No file selected'
# 创建XMLHttpRequest对象
xhr = XMLHttpRequest()
# 创建FormData对象,用于将文件数据添加到请求中
form_data = FormData()
form_data.append('file', file)
# 监听上传进度
xhr.upload.onprogress = function(event) {
if (event.lengthComputable) {
var percentComplete = (event.loaded / event.total) * 100;
console.log('Upload progress: ' + percentComplete.toFixed(2) + '%');
}
};
# 发送上传请求
xhr.open('POST', '/upload')
xhr.send(form_data)
return '''
<h1>文件上传中...</h1>
'''
if __name__ == '__main__':
app.run(debug=True)
在这个示例中,我们创建了一个新的路由'/upload_with_progress'来处理具有文件上传进度的请求。在这个路由中,我们创建了一个'XMLHttpRequest'对象,将文件数据添加到'FormData'对象中,并使用'onprogress'事件监听上传进度。然后,我们发送上传请求,将文件上传到原来的处理程序'/upload'。
请注意,在实际开发中,你可能需要使用第三方库或插件来更方便地处理和显示文件上传进度。这里只提供了一个基本的示例来演示实现的方法。
希望对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/b06g 著作权归作者所有。请勿转载和采集!