spring boot传文件到腾讯云存储

1447 篇文章 12 订阅
1447 篇文章 7 订阅

spring boot 是2.2.1。

依赖

<!-- [腾讯云](https://l.gushuji.site/tencent) -->
        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>5.6.8</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

全局配置文件

#[腾讯云](https://l.gushuji.site/tencent)地址 
tencent:
  path: https://images-12048382642.cos.ap-guangzhou.myqcloud.com

工具

package com.bk.cloudstorage.util;

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.auth.COSCredentialsProvider;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.model.GetObjectRequest;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.qcloud.cos.region.Region;

import java.io.File;
import java.util.Random;

public class TencentUtil {
    // 此处填写的存储桶名称
    private static final String bucketName = "";
    //secretId
    private static final String SecretId = "";
    //SecretKey
    private static final String SecretKey = "";


    // 1 初始化用户身份信息(secretId, secretKey,可在[腾讯云](https://l.gushuji.site/tencent)后台中的API密钥管理中查看!
    private static COSCredentials cred = new BasicCOSCredentials(SecretId,SecretKey);
     2 设置bucket的区域, COS地域的简称请参照
    //    // https://cloud.tencent.com/document/product/436/6224,根据自己创建的存储桶选择地区
    private static ClientConfig clientConfig = new ClientConfig(new Region("ap-guangzhou"));

    /**
     * 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20 M 以下的文件使用该接口 大文件上传请参照 API 文档高级 API 上传
     *
     * @param localfile 要上传的文件
     */
    public static String uploadfile(File localfile,String pathPrefix){
        COSClient cosClient = new COSClient(cred,clientConfig);
        String fileName = "";
        try {
            fileName =localfile.getName();
            String subString = fileName.substring(fileName.lastIndexOf("."));
            Random random = new Random();
            // 指定要上传到 COS 上的路径
            fileName = pathPrefix+"/"+random.nextInt(10000)+System.currentTimeMillis()+subString;
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,fileName,localfile);
            PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            // 关闭客户端(关闭后台线程)
            cosClient.shutdown();
        }
        return fileName;
    }

    public static void downFile(){
        // 生成cos客户端
        COSClient cosClient = new COSClient(cred,clientConfig);
        //要下载的文件路径和名称
        String key = "down";
        // 指定文件的存储路径
        File downFile = new File("");
        // 指定要下载的文件所在的 bucket 和对象键
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName,key);
        ObjectMetadata down = cosClient.getObject(getObjectRequest,downFile);

    }


    /**
     * 删除文件
     */
    public static void deletefile(String key) throws CosClientException, CosServiceException {
        // 生成cos客户端
        COSClient cosclient = new COSClient(cred, clientConfig);
        // 指定要删除的 bucket 和路径
        cosclient.deleteObject(bucketName, key);
        // 关闭客户端(关闭后台线程)
        cosclient.shutdown();
    }

}

腾讯云存储地址
存储桶名称以及所属地域相应的配置在工具里
密钥地址
SecretId以及SecretKey配置工具里

控制层

package com.bk.cloudstorage.controller;

import com.bk.cloudstorage.util.TencentCOS;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Controller
public class imageUploadController {

    @Value("${tencent.path}")
    private String IMAGE_PATH;


    @RequestMapping("/upload")
    public String upload(@RequestParam("file")MultipartFile mulipartFilet,
                         @RequestParam("username") String username, Model model) throws IOException {
        String fh="";
        String fileName = mulipartFilet.getOriginalFilename();
        //判断有无后缀
        if (fileName.lastIndexOf(".")<0) {
            return "上传图片格式不正确!";
        }
        //获取文件后缀
        String prefix = fileName.substring(fileName.lastIndexOf("."));

        if(!prefix.equalsIgnoreCase(".jpg")&&!prefix.equalsIgnoreCase(".jpeg")
        && !prefix.equalsIgnoreCase(".svg")){
            return "上传格式不正确!";
        }
        //使用uuid作为文件名,防止生成的临时文件重复
        final File excelFile =File.createTempFile("imagesFile-" + System.currentTimeMillis(), prefix);
        //将Multifile转换成File
        mulipartFilet.transferTo(excelFile);

        //调用[腾讯云](https://l.gushuji.site/tencent)工具上传文件
        String imageName = TencentCOS.uploadfile(excelFile, "avatar");
        //存入图片名称,用于网页显示
       // model.addAttribute("imageName", imageName);
        return "上传成功!";

    }
    /**
     * 删除临时文件
     *
     * @param files 临时文件,可变参数
     */
    private void deleteFile(File... files) {
        for (File file : files) {
            if (file.exists()) {
                file.delete();
            }
        }
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值