java实现上传文件到腾讯云的存储桶详细过程

通过java的sdk实现源文件云储存

业务场景

系统中实现上传数据报表excel,由于业务场景比较的频繁,项目应用的服务器上不对原始文件进行保存,解析完毕之后数据持久化到数据库中,需要对源文件进行删除操作,当出现问题的时候,无法定位到到底是程序问题,还是数据问题,这样原始文件就必须保留,所以客户要求我们对报表解析完毕之后,需要上传到他们腾讯云的存储桶里面,这样源文件在保存两年之后、他们回去做删除操作。

我这里需要做的就是通过腾讯云提供的sdk连接腾讯云的存储桶,并实现文件上传的操作。
当然,这里腾讯云的api还提供了,构建存储桶,查询存储桶,以及上传文件的上传、查询、下载、删除等操作

工作驱动学习,让我恐惧的不是恐惧本身,而是对恐惧的未知。

对腾讯云存储桶的理解

类似于文件服务平台,其实是一样的,你完全可以自己公司内部、构建一个文件服务平台,只是腾讯云做的更好,稳定性以及提供了完整的sdk工具,以及各种语言的api文档。这样开发者就能够把精力放在开发核心业务上,而不需要关注购买机器,构建文件服务平台以及后期运维,对于小公司这样是得不偿失的。

开发过程

腾讯云存储桶的javaSdk的API参考文档地址:javaSdk

  • 我在项目中抽象了一个操作腾讯云存储桶的工具类:ConnectTencentCloud
    首先通过构造方法初始化连接的客户端COSClient如下图所示
    在这里插入图片描述
  • 这里相关的配置信息,是可以通过配置文件进行手动配置的,如下图
    在这里插入图片描述
  • 下面是核心的上传代码实现
 /**
   * 
   * @describe 上传文件的方法
   * @methods uploadObject 方法名
   * @parameter  fileUrl 上传文件地址
   * @parameter  fileKey 文件对象名称
   * @parameter @return 对象列表
   */
  public PutObjectResult uploadObject(String fileUrl, String fileKey) {
      try {
          // 指定要上传的文件
          File localFile = new File(fileUrl);
          // fileKey 指定要上传到 COS 上对象键
          PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileKey, localFile);
          PutObjectResult  putObjectResult = cosClient.putObject(putObjectRequest);
          return putObjectResult;
      } catch (CosServiceException serverException) {
          	log.error(serverException.getErrorMessage());
          	throw  new RuntimeException("上传文件平台Server异常"+serverException.getErrorMessage());
      } catch (CosClientException clientException) {
              log.error(clientException.getMessage());
              throw  new RuntimeException("上传文件平台Client异常"+clientException.getMessage());
      }
     
  }
  • 为了确认上传,这里额外写了一个查询是否已经成功上传的对象查询的方法,如果是自己的存储桶完全没必要,直接登录点击查看即可,如下图所示(腾讯云的网页客户端)
    存储桶:在这里插入图片描述
  • 控制台查看存储对象:
    在这里插入图片描述
  • 为了方便测试、这里写了一个main方法,将上传以及查询的方法先静态化,测试成功,再去除静态化。
public static void main(String[] args) {
      ConnectTencentCloud  connectTencentCloud=new  ConnectTencentCloud();
      connectTencentCloud.uploadObject("有效文件本地环境地址","文件key");
      connectTencentCloud.queryObjectList();
  }
  • 到这里其实我的业务场景已经完全实现了。
  • 但是由于我这边1元购买了COS的一个月,所以就趁机把构建存储桶,查询储存桶,以及桶中对象的上传,下载,删除,查询等都完全实现了,代码相对完成,仅供参考,如下
  /**
   * 改存储桶已经在前端界面进行创建 创建存储桶测试成功
   */
  public void createCosBucket() {
      String bucket = "examplebucket-1250000000";
      CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucket);
      // 设置 bucket 的权限为 PublicRead(公有读私有写), 其他可选有私有读写, 公有读写
      createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead);
      try {
          Bucket bucketResult = cosClient.createBucket(createBucketRequest);
      } catch (CosServiceException serverException) {
          serverException.printStackTrace();
      } catch (CosClientException clientException) {
          clientException.printStackTrace();
      }
  }
  
  /**
   * 查询存储桶列表 已经测试、成功
   * 
   * @return
   */
  public List<Bucket> queryBucketList() {
      List<Bucket> buckets = null;
      try {
          buckets = cosClient.listBuckets();
          System.out.println(buckets);
      } catch (CosServiceException serverException) {
          serverException.printStackTrace();

      } catch (CosClientException clientException) {
          clientException.printStackTrace();
      }
      return buckets;
  }
  /**
   * 下载对象、测试成功
   */
  public void downLoadObject() {
      try {
          // 指定对象所在的存储桶
          String bucketName = "examplebucket-1250000000";
          // 指定对象在 COS 上的对象键
          String key = "cos_zhaoxw";
          // 指定要下载到的本地路径
          File downFile = new File("F://");
          GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
          ObjectMetadata downObjectMeta = cosClient.getObject(getObjectRequest, downFile);
      } catch (CosServiceException serverException) {
          serverException.printStackTrace();
      } catch (CosClientException clientException) {
          clientException.printStackTrace();
      }
  }

  /**
   * 删除对象 测试成功
   */
  public void deleteObjectRequest() {
      try {
          // 指定对象所在的存储桶
          String bucketName = "examplebucket-1250000000";
          // 指定对象在 COS 上的对象键
          String key = "exampleobject";
          cosClient.deleteObject(bucketName, key);
      } catch (CosServiceException serverException) {
          serverException.printStackTrace();
      } catch (CosClientException clientException) {
          clientException.printStackTrace();
      }
  }
  • 本想是想接上个月的继续把nginx代理服务器给详细记录下学习内容,可是无奈因为工作比较忙,只能写一点手头的内容。关于nginx的只能等有时间继续整理了。
  • 工作驱动学习是最好的,因为当你喜欢的和你工作发生冲突时,永远是工作要紧,因为喜欢不会给你带来money,但是工作会!!!!
要将文件上传腾讯云,可以使用Java编程语言和腾讯云提供的API。以下是一个简单的Java代码示例,演示如何使用Java上传文件腾讯云: ```java import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.request.PutObjectRequest; import com.qcloud.cos.sign.Credentials; import com.qcloud.cos.sign.DefaultCredentials; import com.qcloud.cos.sign.DefaultConfig; import com.qcloud.cos.sign.Signer; import java.io.*; public class FileUploader { public static void main(String[] args) throws Exception { // 设置腾讯云账号信息 String accessKeyId = "your_access_key_id"; String secretAccessKey = "your_secret_access_key"; String bucketName = "your_bucket_name"; String objectKey = "your_object_key"; String localFilePath = "/path/to/local/file"; // 创建签名配置对象和凭证对象 DefaultConfig config = new DefaultConfig(accessKeyId, secretAccessKey); Credentials cred = new DefaultCredentials(accessKeyId, secretAccessKey); // 创建客户端对象并设置客户端配置信息 ClientConfig clientConfig = new ClientConfig(bucketName); COSClient cosClient = new COSClient(clientConfig, config, cred); // 创建上传请求对象并设置文件路径和上传位置信息 PutObjectRequest request = new PutObjectRequest(bucketName, objectKey, new File(localFilePath)); // 执行上传请求并处理响应结果 cosClient.putObject(request); System.out.println("文件上传成功!"); } } ``` 在上述代码中,我们首先设置了腾讯云账号的访问密钥ID、访问密钥、存储名称、文件路径和上传位置等信息。然后,我们创建了一个签名配置对象和一个凭证对象,用于获取腾讯云API的访问权限。接下来,我们创建了一个客户端对象,并设置了客户端配置信息。最后,我们创建了一个上传请求对象,并设置了文件路径和上传位置信息,然后执行上传请求并处理响应结果。如果上传成功,将输出“文件上传成功!”。 请注意,上述代码仅提供了一个基本的文件上传示例,实际使用时需要根据具体情况进行修改和完善。此外,还需要确保已经安装了Java SDK腾讯云SDK,并且已经正确配置了相关环境变量和权限。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值