【问题标题】:How to show a progess of GridFS downloading a file from the MongoDB?如何显示 GridFS 从 MongoDB 下载文件的进度?
【发布时间】:2020-08-12 11:48:25
【问题描述】:

我想知道是否有可能以某种方式显示使用gridfs.GridFS() 和 pymongo 读取文件的进度。我无法提交可以传递给.read() 函数的回调。

my_db = MongoClient().test
fs = GridFSBucket(my_db)
# get _id of file to read.
file_id = fs.upload_from_stream("huge_test_file", "i carry lots of data!")
grid_out = fs.open_download_stream(file_id)
contents = grid_out.read()

有没有办法实际检索已经下载的字节?考虑到文件可能有 5GB 大,我想提供一些下载状态反馈。

【问题讨论】:

    标签: python-3.x pymongo gridfs


    【解决方案1】:

    我知道已经 11 个月了.. 但我认为这样做的方法是:

    创建一个新的端点,返回最后一个块 'n' 值,然后将其与文件 'chunkSize' 值进行比较。

    @app.route('/uploadProgress/<string:fileID>')
    def uploadProgress(fileID):
        doc = db.fs.files.find_one({"_id": fileID})
        size = doc['chunkSize']
        n = db.fs.chunks.find( { "files_id": fileID } ).sort([('n', -1)]).limit(1)[0]['n']
        progress = str(n/size)
        return progress
    

    现在在 javascript 中,您可以请求检查进度并更新进度条

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      相关资源
      最近更新 更多