栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用flask(或烧瓶或类似容器)上传流文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用flask(或烧瓶或类似容器)上传流文件

我建议在前端将传入文件拆分为较小的块。我这样做是为了在Flask应用程序中为大型文件上传实现暂停/恢复功能。

使用Sebastian Tschan的jquery插件,您可以通过

maxChunkSize
在初始化插件时指定a来实现分块,如下所示:

$('#file-select').fileupload({    url: '/uploads/',    sequentialUploads: true,    done: function (e, data) {        console.log("uploaded: " + data.files[0].name)    },    maxChunkSize: 1000000 // 1 MB});

现在,客户端在上传大文件时将发送多个请求。您的服务器端代码可以使用

Content-Range
标头将原始大文件重新修补在一起。对于Flask应用程序,视图可能类似于:

# Upload files@app.route('/uploads/', methods=['POST'])def results():    files = request.files    # assuming only one file is passed in the request    key = files.keys()[0]    value = files[key] # this is a Werkzeug FileStorage object    filename = value.filename    if 'Content-Range' in request.headers:        # extract starting byte from Content-Range header string        range_str = request.headers['Content-Range']        start_bytes = int(range_str.split(' ')[1].split('-')[0])        # append chunk to the file on disk, or create new        with open(filename, 'a') as f: f.seek(start_bytes) f.write(value.stream.read())    else:        # this is not a chunked request, so just save the whole file        value.save(filename)    # send response with appropriate mime type header    return jsonify({"name": value.filename,         "size": os.path.getsize(filename),         "url": 'uploads/' + value.filename,         "thumbnail_url": None,         "delete_url": None,         "delete_type": None,})

对于您的特定应用程序,您只需确保仍随每个请求发送正确的auth标头。

希望这可以帮助!我在这个问题上挣扎了一段时间;)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号