import time import oss2 # pip install oss2 import hashlib import requests from Util import PgUtil # 填写RAM用户的访问密钥(AccessKey ID和AccessKey Secret)。 accessKeyId = 'LTAI5tE4tgpGcKWhbZg6C4bh' accessKeySecret = 'oizcTOZ8izbGUouboC00RcmGE8vBQ1' # endpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 endpoint = 'http://oss-cn-beijing.aliyuncs.com' # 填写Bucket名称。 bucketName = 'hzkc' # 使用代码嵌入的RAM用户的访问密钥配置访问凭证。 auth = oss2.Auth(accessKeyId, accessKeySecret) bucket = oss2.Bucket(auth, endpoint, bucketName) # 遍历 Images/Upload前缀下所有文件 # 指定前缀 prefix = 'Images/Upload/' def download_image(image_url, file_path): while True: try: # 发送GET请求 response = requests.get(image_url) # 检查请求是否成功 if response.status_code == 200: # 打开一个文件用于写入 with open(file_path, 'wb') as f: # 将响应的内容写入文件中 f.write(response.content) break else: pass except Exception as err: time.sleep(3) q = [] # 使用ObjectIterator查找具有指定前缀的对象 for obj in oss2.ObjectIterator(bucket, prefix=prefix): oss_file_path = obj.key if '.' not in oss_file_path: continue local_file_path = 'D:/Temp/' + oss_file_path.replace(prefix, '') img_url = "http://hzkc.oss-cn-beijing.aliyuncs.com/" + obj.key download_image(img_url, local_file_path) with open(local_file_path, 'rb') as fp: modelData = fp.read() file_md5 = hashlib.md5(modelData).hexdigest() # print(file_md5) sql = "select image_md5,image_url as c from t_hy_image_md5 where image_md5='%s'" % file_md5 list = PgUtil.execute_query(sql) count = len(list) if count == 0: sql = "insert into t_hy_image_md5(image_md5,image_url) values('%s','%s')" % (file_md5, img_url) PgUtil.execute_modify(sql) else: print("img_url=" + img_url + "===>" + list[0][1]) # 1、删除远程文件 if img_url != list[0][1]: bucket.delete_object(obj.key) # 2、更改t_hy_task source_img_url sql = "update t_hy_task set source_img_url='%s' where source_img_url='%s'" % (list[0][1], img_url) PgUtil.execute_modify(sql)