返回

阿里云OSS文件上传工具构建之旅(第一部分)

后端

导语:文件上传自动化之路

在日常工作中,我们经常需要将文件上传到云存储平台,例如阿里云OSS(Object Storage Service)。传统的手动上传方式效率低下,且容易出错。因此,开发一个自动化文件上传工具势在必行。

第一章:环境搭建与服务配置

  1. 环境搭建

    • 安装Java或Python开发环境。
    • 安装阿里云SDK。
  2. 服务配置

    • 注册阿里云账号并创建OSS存储桶。
    • 获取Access Key ID和Access Key Secret。

第二章:Java代码实现

  1. 初始化OSS客户端

    OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
  2. 上传文件

    ossClient.putObject(bucketName, objectName, localFilePath);
    
  3. 获取文件上传进度

    TransferManager transferManager = new TransferManager(ossClient);
    PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, localFilePath);
    TransferProgressCallback callback = new TransferProgressCallback() {
        @Override
        public void progressChanged(PutObjectRequest request, long bytesWritten, long totalBytes) {
            // 打印上传进度
            System.out.println("上传进度:" + bytesWritten * 100.0 / totalBytes + "%");
        }
    };
    transferManager.upload(putObjectRequest, callback);
    

第三章:Python代码实现

  1. 初始化OSS客户端

    from aliyunsdkcore.client import AcsClient
    from aliyunsdksts.request.v20150401 import AssumeRoleRequest
    from aliyunsdkoss.oss_api import OssClient
    
    client = AcsClient(accessKeyId, accessKeySecret, 'cn-hangzhou')
    request = AssumeRoleRequest()
    request.set_accept_format('json')
    request.set_role_arn(role_arn)
    request.set_role_session_name('session-name')
    response = client.do_action_with_exception(request)
    accessKeyId = response.get('Credentials').get('AccessKeyId')
    accessKeySecret = response.get('Credentials').get('AccessKeySecret')
    securityToken = response.get('Credentials').get('SecurityToken')
    
    ossClient = OssClient(accessKeyId, accessKeySecret, securityToken, endpoint)
    
  2. 上传文件

    ossClient.put_object_from_file(bucketName, objectName, localFilePath)
    
  3. 获取文件上传进度

    from aliyunsdkoss.common.exceptions import ClientError
    
    def progress_callback(bytes_written, total_bytes):
        # 打印上传进度
        print('上传进度:', bytes_written * 100.0 / total_bytes, '%')
    
    try:
        ossClient.upload_file(bucketName, objectName, localFilePath, progress_callback=progress_callback)
    except ClientError as e:
        print('上传文件失败', e)
    

第四章:命令行工具

  1. 安装工具

    pip install aliyun-oss-uploader
    
  2. 使用工具上传文件

    aliyun-oss-uploader upload -b bucketName -f localFilePath -k accessKeyId -s accessKeySecret -e endpoint
    

结语

通过本文,我们构建了一个文件上传工具,实现了文件上传的自动化。在后续的文章中,我们将继续完善工具的功能,使其更加强大和易用。

致谢

感谢阿里云提供的OSS服务和SDK,使我们能够快速构建文件上传工具。