Spring boot 上传文件到腾讯云储存

1.登录到腾讯云平台(https://cloud.tencent.com)

2.选择【云产品,对象存储】


3.新建



4.查看刚刚创建存



5.选择



6.创建Spring boot项目

<!--腾讯云存储依赖-->
<dependency>
    <groupId>com.qcloud</groupId>
    <artifactId>cos_api</artifactId>
    <version>5.2.4</version>
</dependency>

7.把刚刚我们创建的腾讯云存储桶的信息添加进Spring boot项目的配置文件中


8.编写上传的控制器

package com.pingao.guns.modular.demo.controller;

import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.qcloud.cos.region.Region;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.UUID;

/**
 * 文件上传控制器
 */
@Controller
@RequestMapping(value = "/upload")
public class UploadController {
    
    @Value("${spring.tengxun.accessKey}")
    private String accessKey;
    @Value("${spring.tengxun.secretKey}")
    private String secretKey;
    @Value("${spring.tengxun.bucket}")
    private String bucket;
    @Value("${spring.tengxun.bucketName}")
    private String bucketName;
    @Value("${spring.tengxun.path}")
    private String path;
    @Value("${spring.tengxun.qianzui}")
    private String qianzui;
    /**
     * 上传道腾讯云服务器(https://cloud.tencent.com/document/product/436/10199)
     * @return
     */
    @RequestMapping(value = "/tengxun",method = RequestMethod.POST)
    @ResponseBody
    public Object Upload(@RequestParam(value = "file") MultipartFile file, HttpSession session){
        if(file == null){
            return new UploadMsg(0,"文件为空",null);
        }
        String oldFileName = file.getOriginalFilename();
        String eName = oldFileName.substring(oldFileName.lastIndexOf("."));
        String newFileName = UUID.randomUUID()+eName;
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month=cal.get(Calendar.MONTH);
        int day=cal.get(Calendar.DATE);
        // 1 初始化用户身份信息(secretId, secretKey)
        COSCredentials cred = new BasicCOSCredentials(accessKey, secretKey);
        // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
        ClientConfig clientConfig = new ClientConfig(new Region(bucket));
        // 3 生成cos客户端
        COSClient cosclient = new COSClient(cred, clientConfig);
        // bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
        String bucketName = this.bucketName;

        // 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20 M 以下的文件使用该接口
        // 大文件上传请参照 API 文档高级 API 上传
        File localFile = null;
        try {
            localFile = File.createTempFile("temp",null);
            file.transferTo(localFile);
            // 指定要上传到 COS 上的路径
            String key = "/"+this.qianzui+"/"+year+"/"+month+"/"+day+"/"+newFileName;
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
            PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest);
            return new UploadMsg(1,"上传成功",this.path + putObjectRequest.getKey());
        } catch (IOException e) {
            return new UploadMsg(-1,e.getMessage(),null);
        }finally {
            // 关闭客户端(关闭后台线程)
            cosclient.shutdown();
        }
    }
    
    private class UploadMsg{
        public int status;
        public String msg;
        public String path;

        public UploadMsg() {
            super();
        }

        public UploadMsg( int status,String msg,String path){        
        this.status = status;
        this.msg = msg;
        this.path = path;
      }
}
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot是现代化的Java开发框架,它提供了一种简化和加速应用程序开发的方式。Vue则是一种流行的JavaScript框架,用于构建用户界面。而腾讯云腾讯公司提供的一种云计算服务平台,可以提供各种云计算解决方案。 腾讯云的分片下载是一种文件下载方式,可以将一个大文件分割成多个小文件进行下载,以提高下载速度和稳定性。在Spring Boot和Vue应用中使用腾讯云分片下载需要按照以下步骤进行。 首先,需要将大文件上传到腾讯云的存储服务中,例如对象存储(COS)服务。可以使用腾讯云Java SDK来实现文件的上传。 然后,在Spring Boot中创建一个下载接口,接收前端传来的文件名和分片信息。可以使用Spring Boot的文件下载功能和腾讯云Java SDK来实现文件的下载。在下载的过程中,需要按照分片信息将文件拼接成完整的文件。 接着,在Vue中创建一个文件下载页面或组件,可以通过调用前端框架或插件来实现文件的分片下载。可以使用Vue的异步请求库来向后端发送下载请求,并处理文件的分片下载逻辑。 最后,需要将前端页面和后端接口进行对接,将文件的下载请求和分片信息传递给后端进行处理。前端可以通过监听下载进度和显示下载速度等信息来提供更好的用户体验。 综上所述,使用Spring Boot和Vue进行腾讯云分片下载需要进行文件上传、下载和前后端对接等步骤。通过合理利用各种框架和工具,可以实现高效稳定的分片下载功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值