Ter*_*.Su 9 python file-upload large-files flask
我正在尝试实现一个用于上传文件的烧瓶应用程序.这个文件可能非常大.例如,几乎2G的大小.
我已完成服务器端进程功能,如下所示:
@app.route("/upload/<filename>", methods=["POST", "PUT"])
def upload_process(filename):
filename = secure_filename(filename)
fileFullPath = os.path.join(application.config['UPLOAD_FOLDER'], filename)
with open(fileFullPath, "wb") as f:
chunk_size = 4096
while True:
chunk = flask.request.stream.read(chunk_size)
if len(chunk) == 0:
return
f.write(chunk)
return jsonify({'filename': filename})
Run Code Online (Sandbox Code Playgroud)
至于浏览器方面,我应该给用户一个提交文件.一次一个文件.显示进度条以指示上载过程.但我不知道浏览器端代码.如何使用javascript代码开始上传并显示状态?
对于您自己来说,这将是一项艰巨的任务。我建议使用像https://blueimp.github.io/jQuery-File-Upload/这样的插件
您可以从这个项目的源代码中看到,他们使用一个方法名称,该名称本质上查看文件有多大、到目前为止已传输多少数据以及剩余多少数据以显示完整 div 的百分比。
该项目的代码示例
progressall: function (e, data) {
var $this = $(this);
$this.find('.fileupload-progress')
.find('.progress').progressbar(
'option',
'value',
parseInt(data.loaded / data.total * 100, 10)
).end()
.find('.progress-extended').each(function () {
$(this).html(
($this.data('blueimp-fileupload') ||
$this.data('fileupload'))
._renderExtendedProgress(data)
);
});
}
Run Code Online (Sandbox Code Playgroud)
https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload-jquery-ui.js
因此,如果您确实想提出自己的解决方案,我建议您首先构建一个 UI div 矩形,该矩形具有动态宽度,该宽度根据基于文件上传大小和上传数据的百分比计算进行更新...或者只是采用已经建立的解决方案。
归档时间: |
|
查看次数: |
6374 次 |
最近记录: |