upyun / python-sdk

UPYUN Python SDK
117 stars 29 forks source link

目前版本的python sdk不支持上传文件和下载文件的进度条显示功能 #4

Closed wh1100717 closed 10 years ago

wh1100717 commented 10 years ago

如果项目利用python sdk来上传、下载文件,大多应该是在terminal运行的吧? 如果没有progress bar,上传个稍微大点的文件就体验就特别不好了~~ 我在我的项目写了一个往upyun上传文件,支持终端实时显示上传进度、上传速度等等信息的code。 你如果感兴趣,可以考虑加上类似的功能o(∩_∩)o https://github.com/wh1100717/PolySpider/blob/master/src/PolySpider/FileUploadUtils.py

timebug commented 10 years ago

ok,会考虑在下个版本 v2.2.0 增加 upload 和 download 相关的 callback,调用者可自行实现类似进度条的业务逻辑。

timebug commented 10 years ago

最新的 master 分支已经支持自定义 uploading 和 downloading 的 progress handler 绑定,通过这个可以很容易实现上传下载文件的进度条显示,示例代码如下:

from progressbar import *

class ProgressBarHandler(object):
    def __init__(self, totalsize, params):
        widgets = [params, Percentage(), ' ',
                   Bar(marker='=', left='[', right=']'), ' ',
                   ETA(), ' ', FileTransferSpeed()]
        self.pbar = ProgressBar(widgets=widgets, maxval=totalsize).start()

    def update(self, readsofar):
        self.pbar.update(readsofar)

    def finish(self):
        self.pbar.finish()

with open('unix.png', 'rb') as f:
    res = up.put('xinu.png', f, handler=ProgressBarHandler, params="Uploading ")

with open('xinu.png', 'wb') as f:
    up.get('xinu.png', f, handler=ProgressBarHandler, params="Downloading ")
timebug commented 10 years ago

Hi, wh1100717

最新的 v2.2.0 已经发布,pypi 也同步更新了,该版本提供了上述的上传下载过程的回调接口,你可以通过此接口方便地实现进度条的逻辑。

另外,这个 issues 我暂时关闭了,若有其他问题,可重新打开它,感谢你的反馈和建议 :-)

wh1100717 commented 10 years ago

@timebug nice job~ O(∩_∩)O