diff --git a/examples/upload_with_zone.py b/examples/upload_with_zone.py index c8650d39..9d5b80fb 100644 --- a/examples/upload_with_zone.py +++ b/examples/upload_with_zone.py @@ -12,10 +12,10 @@ q = Auth(access_key, secret_key) # 要上传的空间 -bucket_name = 'bucket_name' +bucket_name = 'Bucket_Name' # 上传到七牛后保存的文件名 -key = 'a.jpg' +key = 'my-python-logo.png' # 生成上传 Token,可以指定过期时间等 token = q.upload_token(bucket_name, key, 3600) @@ -30,11 +30,12 @@ # 备用*.qiniu.com域名 不支持https上传 # 要求https上传时,如果客户指定的两个host都错误,且sdk自动查询的第一个*.qiniup.com上传域名因意外不可用导致访问到备用*.qiniu.com会报ssl错误 # 建议https上传时查看上面文档,指定正确的host +# 可以填 None 不可填空字符串 zone = Zone( - up_host='https://up.qiniup.com', - up_host_backup='https://upload.qiniup.com', - io_host='http://iovip.qbox.me', + up_host='http://upload.qiniup.com', + up_host_backup='http://up.qiniup.com', + io_host='https://iovip.qbox.me', scheme='https') set_default(default_zone=zone) diff --git a/qiniu/region.py b/qiniu/region.py index c87c02c5..27b8c453 100644 --- a/qiniu/region.py +++ b/qiniu/region.py @@ -88,14 +88,13 @@ def get_bucket_hosts(self, ak, bucket): hosts[self.scheme].update({'io': []}) if self.up_host is not None: - hosts[self.scheme]['up'].append(self.scheme + "://" + self.up_host) + hosts[self.scheme]['up'].append(self.up_host) if self.up_host_backup is not None: - hosts[self.scheme]['up'].append( - self.scheme + "://" + self.up_host_backup) + hosts[self.scheme]['up'].append(self.up_host_backup) if self.io_host is not None: - hosts[self.scheme]['io'].append(self.scheme + "://" + self.io_host) + hosts[self.scheme]['io'].append(self.io_host) if len(hosts[self.scheme]) == 0 or self.io_host is None: hosts = compat.json.loads(self.bucket_hosts(ak, bucket)) @@ -113,7 +112,6 @@ def get_bucket_hosts(self, ak, bucket): 'ioHosts': scheme_hosts['io'], 'deadline': int(time.time()) + hosts['ttl'] } - self.set_bucket_hosts_to_cache(key, bucket_hosts) return bucket_hosts @@ -127,7 +125,6 @@ def get_bucket_hosts_to_cache(self, key): if (self.host_cache[key]['deadline'] > time.time()): ret = self.host_cache[key] - return ret def set_bucket_hosts_to_cache(self, key, val): diff --git a/qiniu/services/storage/uploader.py b/qiniu/services/storage/uploader.py index 1922e4c2..5849ecb7 100644 --- a/qiniu/services/storage/uploader.py +++ b/qiniu/services/storage/uploader.py @@ -92,12 +92,12 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None fields['key'] = key fields['token'] = up_token + if config.get_default('default_zone').up_host: url = config.get_default('default_zone').up_host else: url = config.get_default('default_zone').get_up_host_by_token(up_token) # name = key if key else file_name - fname = file_name if not fname or not fname.strip(): fname = 'file_name' @@ -105,7 +105,6 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None # last modify time if modify_time and keep_last_modified: fields['x-qn-meta-!Last-Modified'] = rfc_from_timestamp(modify_time) - r, info = http._post_file(url, data=fields, files={'file': (fname, data, mime_type)}) if r is None and info.need_retry(): if info.connect_failed: @@ -165,8 +164,7 @@ def __init__(self, up_token, key, input_stream, data_size, params, mime_type, self.modify_time = modify_time or time.time() self.file_name = file_name self.keep_last_modified = keep_last_modified - # print(self.modify_time) - # print(modify_time) + def record_upload_progress(self, offset): record_data = { @@ -176,7 +174,6 @@ def record_upload_progress(self, offset): } if self.modify_time: record_data['modify_time'] = self.modify_time - # print(record_data) self.upload_progress_recorder.set_upload_record(self.file_name, self.key, record_data) def recovery_from_record(self): @@ -253,7 +250,6 @@ def file_url(self, host): "x-qn-meta-!Last-Modified/{0}".format(urlsafe_base64_encode(rfc_from_timestamp(self.modify_time)))) url = '/'.join(url) - # print url return url def make_file(self, host): diff --git a/test_qiniu.py b/test_qiniu.py index 1a42e6fb..bd7ef846 100644 --- a/test_qiniu.py +++ b/test_qiniu.py @@ -368,6 +368,38 @@ def test_putData_without_fname2(self): print(info) assert ret is not None + def test_put_zone(self): + zone = Zone( + up_host='http://upload.qiniup.com', + up_host_backup='http://up.qiniup.com', + io_host='https://iovip.qbox.me', + scheme='https') + set_default(default_zone=zone) + key = 'big' + token = self.q.upload_token(bucket_name, key) + localfile = create_temp_file(4 * 1024 * 1024 + 1) + progress_handler = lambda progress, total: progress + ret, info = put_file(token, key, localfile, self.params, self.mime_type, progress_handler=progress_handler) + print(info) + assert ret['key'] == key + remove_temp_file(localfile) + + def test_put_zone_without_host(self): + zone = Zone( + up_host=None, + up_host_backup=None, + io_host=None, + scheme='https') + set_default(default_zone=zone) + key = 'big' + token = self.q.upload_token(bucket_name, key) + localfile = create_temp_file(4 * 1024 * 1024 + 1) + progress_handler = lambda progress, total: progress + ret, info = put_file(token, key, localfile, self.params, self.mime_type, progress_handler=progress_handler) + print(info) + assert ret['key'] == key + remove_temp_file(localfile) + class ResumableUploaderTestCase(unittest.TestCase): mime_type = "text/plain"