OBS追加上传文件

OBS追加上传文件

public class ObsService {
   
    private final Logger log = LoggerFactory.getLogger(ObsService.class);

    private final HuaweiyunProperties huaweiyunProperties;

    public ObsService(HuaweiyunProperties huaweiyunProperties){
   
        this.huaweiyunProperties = huaweiyunProperties;
    }

    public void appendUpload(String relativeFilePath, byte[] contentBytes)  {
   
        ObsClient obsClient = initObsClient();
        appendObj(obsClient, relativeFilePath, contentBytes);
        close(obsClient);
    }
	
	private ObsClient initObsClient() {
   
        String endPoint = huaweiyunProperties.getObs().getEndPoint();
        String accessKey = huaweiyunProperties.getAccount().getAccessKey();
        String accessKeySecret = huaweiyunProperties.getAccount().
### 华为云 OBS 文件上传与下载方法 #### 一、文件上传至华为云OBS 为了实现文件向华为云对象存储服务(Object Storage Service, OBS)的传输,开发者可以利用多种编程语言中的SDK来简化操作过程。以Python为例,通过安装`huaweicloudsdkobs`库能够便捷地完成这一任务[^1]。 首先,在本地环境中需确保已正确配置好访问密钥等相关认证信息以便后续调用API接口时验证身份合法性。接着按照如下方式编写用于上传单个文件到指定桶内的代码: ```python from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkobs.v1.region.obs_region import ObsRegion from huaweicloudsdkobs.v1.model.put_object_request import PutObjectRequest from huaweicloudsdkobs.v1.api.object_api import ObjectApi def upload_file_to_obs(bucket_name, object_key, file_path): ak = 'your_access_key' # 替换成自己的AK sk = 'your_secret_key' # 替换成自己的SK credentials = BasicCredentials(ak, sk) obs_client = ObjectApi.new_builder()\ .with_credentials(credentials)\ .with_region(ObsRegion.value_of("cn-north-4"))\ # 根据实际需求调整区域参数 .build() try: with open(file_path, 'rb') as f: request_body = f.read() put_req = PutObjectRequest( bucket=bucket_name, key=object_key, content=request_body ) response = obs_client.put_object(put_req) print(f"Upload successful! ETag: {response.etag}") except Exception as e: print(e) if __name__ == "__main__": upload_file_to_obs('my-bucket-name', 'example.txt', './local_example.txt') ``` 上述脚本展示了怎样借助官方提供的Python SDK将本地磁盘上的文件发送给特定名称的空间内并保存为预设的对象键名。 #### 二、从华为云OBS下载文件 同样地,对于想要获取存放在OBS里的资源而言,也可以采用相似的方法构建请求逻辑。下面给出了一段简单的实例用来说明如何读取远程服务器上某路径下的数据流并将之写入当前工作目录下新创建出来的同名实体中去: ```python from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkobs.v1.region.obs_region import ObsRegion from huaweicloudsdkobs.v1.api.object_api import ObjectApi import os.path def download_file_from_obs(bucket_name, object_key, save_as=None): ak = 'your_access_key' sk = 'your_secret_key' if not save_as or len(save_as.strip())==0 : save_as=os.path.basename(object_key) credentials = BasicCredentials(ak, sk) obs_client = ObjectApi.new_builder() \ .with_credentials(credentials) \ .with_region(ObsRegion.value_of("cn-north-4")) \ .build() try: get_response = obs_client.get_object(GetObjectRequest(bucket_name, object_key)) data = b''.join([chunk for chunk in get_response.body]) with open(save_as,'wb+')as fp: fp.write(data) print(f'Download completed and saved as "{save_as}"') except Exception as ex: print(ex) if __name__=='__main__': download_file_from_obs('my-bucket-name','example.txt') ``` 此部分程序实现了基于HTTP GET命令发起针对目标位置处的数据检索动作,并最终把接收到的内容序列化成字节串形式再持久化落地于客户端机器之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工程师小A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值