예제 #1
0
def upload_file(cos_client, bucket, cos_path, db, file_stat):
    global cos_task_statics
    local_path = file_stat.file_path

    if not isinstance(local_path, unicode):
        local_path = local_path.decode(fs_encoding)

    retry_index = 0
    retry_max_cnt = 3
    while retry_index < retry_max_cnt:
        request = UploadFileRequest(bucket, cos_path, local_path)
        request.set_insert_only(0)
        op_ret = cos_client.upload_file(request)
        if cos_op_success(op_ret):
            db.update_record(file_stat)
            cos_task_statics.add_upload_file_ok()
            print_op_ok("uploadFile", op_ret, local_path)
            return True
        if is_upload_server_error(op_ret):
            del_request = DelFileRequest(bucket, cos_path)
            cos_client.del_file(del_request)
        retry_index += 1

    if retry_index == retry_max_cnt:
        cos_task_statics.add_upload_file_fail()
        print_op_fail("uploadFile", op_ret, local_path)
        return False
예제 #2
0
def deleteCosFile(cos_client, bucket, cosFile):
    succes = times = 0
    while succes == 0 and times < 10:
        times += 1
        try:
            del_ret = cos_client.del_file(DelFileRequest(bucket, cosFile))
            # print cosFile+formatJSON(del_ret)
            if del_ret['message'] == u'SUCCESS':
                succes = 1
            print 'Delete | %-10s | %s' % (del_ret['message'], cosFile)
        except:
            pass
    if times == 10:
        print '===Error===: %s delete failed' % (cosFile)
예제 #3
0
def delete_file(cos_client, bucket, cos_path, db, file_stat):
    global cos_task_statics
    local_path = file_stat.file_path
    request = DelFileRequest(bucket, cos_path)
    op_ret = cos_client.del_file(request)
    if cos_op_success(op_ret):
        db.del_record(file_stat)
        cos_task_statics.add_del_file_ok()
        print_op_ok("deleteFile", op_ret, local_path)
        return True
    else:
        cos_task_statics.add_del_file_fail()
        print_op_fail("deleteFile", op_ret, local_path)
        return False
예제 #4
0
def delete_cos(file):
    appid = 10000  # 根据自己的情况填写
    secret_id = u'# 根据自己的情况填写'
    secret_key = u'# 根据自己的情况填写'
    region = '# 根据自己的情况填写'
    bucket = u'# 根据自己的情况填写'

    cos_client = CosClient(appid, secret_id, secret_key, region)
    cos_path = u'/' + file

    request = DelFileRequest(bucket, cos_path)

    start = time.time()
    resp = cos_client.del_file(request)
    # assert resp['code'] == 0
    end = time.time()
    if resp['code'] != 0:
        return 0
    elapsed = (end - start) * 1000.0
    print 'COS Delete File Time %0.3f ms' % elapsed
    return elapsed
예제 #5
0
파일: utils.py 프로젝트: wkatios/meizitu
def del_file(filename):
    request = DelFileRequest(bucket, u'%s'%filename)
    del_ret = cos_client.del_file(request)
    return  del_ret
예제 #6
0
from qcloud_cos import UploadFileRequest
from qcloud_cos import CosClient
import sys

if __name__ == '__main__':
    if len(sys.argv) < 3:
        print "argv error"

    bucket = u'koprvhdix117'
    app_id = 10038234
    secret_id = u'AKIDkTQGMuCeJvtTTlqg911BfF393ghumqHp'
    secret_key = u'ZE1uBa6jfbsB0vVyfbWhw5JuZKPwaEwh'

    cos_client = CosClient(app_id, secret_id, secret_key)

    if sys.argv[1] == "upload":
        cos_path = unicode(sys.argv[2])
        local_path = unicode(sys.argv[3])

        request = UploadFileRequest(bucket, cos_path, local_path)
        upload_file_ret = cos_client.upload_file(request)
        print upload_file_ret
    elif sys.argv[1] == "delete":
        cos_path = unicode(sys.argv[2])

        request = DelFileRequest(bucket, cos_path)
        delete_file_ret = cos_client.del_file(request)
        print delete_file_ret
    else:
        print "argv error"
예제 #7
0
def cos_demo():
    # 设置用户属性, 包括appid, secret_id和secret_key
    # 这些属性可以在cos控制台获取(https://console.qcloud.com/cos)
    appid = 100000  # 替换为用户的appid
    secret_id = u'xxxxxxxx'  # 替换为用户的secret_id
    secret_key = u'xxxxxxx'  # 替换为用户的secret_key
    cos_client = CosClient(appid, secret_id, secret_key)

    # 设置要操作的bucket
    bucket = u'mybucket'

    ############################################################################
    # 文件操作                                                                 #
    ############################################################################
    # 1. 上传文件(默认不覆盖)
    #    将本地的local_file_1.txt上传到bucket的根分区下,并命名为sample_file.txt
    #    默认不覆盖, 如果cos上文件存在,则会返回错误
    request = UploadFileRequest(bucket, u'/sample_file.txt',
                                u'local_file_1.txt')
    upload_file_ret = cos_client.upload_file(request)
    print 'upload file ret:', repr(upload_file_ret)

    # 2. 上传文件(覆盖文件)
    #    将本地的local_file_2.txt上传到bucket的根分区下,覆盖已上传的sample_file.txt
    request = UploadFileRequest(bucket, u'/sample_file.txt',
                                u'local_file_2.txt')
    request.set_insert_only(0)  # 设置允许覆盖
    upload_file_ret = cos_client.upload_file(request)
    print 'overwrite file ret:', repr(upload_file_ret)

    # 3. 获取文件属性
    request = StatFileRequest(bucket, u'/sample_file.txt')
    stat_file_ret = cos_client.stat_file(request)
    print 'stat file ret:', repr(stat_file_ret)

    # 4. 更新文件属性
    request = UpdateFileRequest(bucket, u'/sample_file.txt')

    request.set_biz_attr(u'这是个demo文件')  # 设置文件biz_attr属性
    request.set_authority(u'eWRPrivate')  # 设置文件的权限
    request.set_cache_control(u'cache_xxx')  # 设置Cache-Control
    request.set_content_type(u'application/text')  # 设置Content-Type
    request.set_content_disposition(u'ccccxxx.txt')  # 设置Content-Disposition
    request.set_content_language(u'english')  # 设置Content-Language
    request.set_x_cos_meta(u'x-cos-meta-xxx', u'xxx')  # 设置自定义的x-cos-meta-属性
    request.set_x_cos_meta(u'x-cos-meta-yyy', u'yyy')  # 设置自定义的x-cos-meta-属性

    update_file_ret = cos_client.update_file(request)
    print 'update file ret:', repr(update_file_ret)

    # 5. 更新后再次获取文件属性
    request = StatFileRequest(bucket, u'/sample_file.txt')
    stat_file_ret = cos_client.stat_file(request)
    print 'stat file ret:', repr(stat_file_ret)

    # 6. 移动文件, 将sample_file.txt移动位sample_file_move.txt
    request = MoveFileRequest(bucket, u'/sample_file.txt',
                              u'/sample_file_move.txt')
    stat_file_ret = cos_client.move_file(request)
    print 'move file ret:', repr(stat_file_ret)

    # 7. 删除文件
    request = DelFileRequest(bucket, u'/sample_file_move.txt')
    del_ret = cos_client.del_file(request)
    print 'del file ret:', repr(del_ret)

    ############################################################################
    # 目录操作                                                                 #
    ############################################################################
    # 1. 生成目录, 目录名为sample_folder
    request = CreateFolderRequest(bucket, u'/sample_folder/')
    create_folder_ret = cos_client.create_folder(request)
    print 'create folder ret:', create_folder_ret

    # 2. 更新目录的biz_attr属性
    request = UpdateFolderRequest(bucket, u'/sample_folder/', u'这是一个测试目录')
    update_folder_ret = cos_client.update_folder(request)
    print 'update folder ret:', repr(update_folder_ret)

    # 3. 获取目录属性
    request = StatFolderRequest(bucket, u'/sample_folder/')
    stat_folder_ret = cos_client.stat_folder(request)
    print 'stat folder ret:', repr(stat_folder_ret)

    # 4. list目录, 获取目录下的成员
    request = ListFolderRequest(bucket, u'/sample_folder/')
    list_folder_ret = cos_client.list_folder(request)
    print 'list folder ret:', repr(list_folder_ret)

    # 5. 删除目录
    request = DelFolderRequest(bucket, u'/sample_folder/')
    delete_folder_ret = cos_client.del_folder(request)
    print 'delete folder ret:', repr(delete_folder_ret)