将文件上传到七牛云--先删除再上传

210 阅读1分钟

在为deepin打包的过程中,使用到了七牛的云存储,大概的流程如下

  • 打包
  • 上传七牛云
  • 发送邮件给我
  • 我将打好的包的七牛cdn地址发送给deepin的管理员
  • 管理员安排测试并上架

在少数情况下,我会为同一个包打多次,但是因为包名没有变,所以cdn下载到的还是旧的,为了避免这种情况,我升级了一下脚本,改为先删除再上传。具体代码如下


def delete_file(myauth: Auth, bucket_name: str, key: str):
    # 初始化BucketManager
    bucket = BucketManager(myauth)
    # 删除bucket_name 中的文件 key
    ret, info = bucket.delete(bucket_name, key)
    print(info)
    print(ret)

def upload_file(myauth: Auth, bucket_name: str, key: str):
    # 生成上传 Token,可以指定过期时间等
    token = myauth.upload_token(bucket_name, key, 600)
    # 要上传文件的本地路径
    localfile = './' + key
    ret, info = put_file(token, key, localfile, version='v2')
    print(info)
    assert ret['key'] == key
    assert ret['hash'] == etag(localfile)
    
def delete_then_upload(myauth: Auth, bucket_name: str, key: str):
    # 因为可能文件之前存在过,所以提前删除一下。
    delete_file(myauth, bucket_name, key)
    upload_file(myauth, bucket_name, key)

delete_then_upload(myauth, bucket_name, package_name)