作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试实现一个用于上传文件的 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})
至于浏览器端,我应该给用户一个提交文件的地址。一次一个文件。显示进度条以指示上传过程。但我不知道浏览器端代码。如何使用 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)
);
});
}
https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload-jquery-ui.js
因此,如果您确实想提出自己的解决方案,我建议您先构建一个具有动态宽度的 UI div 矩形,该矩形会根据基于文件上传大小和上传数据的百分比计算进行更新。 . 或者只是使用已经建立的解决方案。
关于python - Flask中的大文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38048355/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!