• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

腾讯云对象存储实现文件上传下载

武飞扬头像
继承java之父
帮助1

1.一共分三步 配置 工具类 接口调用

2.配置

#腾讯云COS存储
tencentCosUtil:
  #开发者拥有的项目身份识别 ID,用于身份认证,可在 API 密钥管理 页面获取
  secretId: 
  #开发者拥有的项目身份密钥,可在 API 密钥管理 页面获取
  secretKey: 
  #存储桶名称格式,用户在使用 API、SDK 时,需要按照此格式填写存储桶名称
  bucket: book-borrowing-1308110037
  #存储桶配置管理中访问域名的URL(格式:https://bucketName.cos.所在地域(例如:ap-nanjing).myqcloud.com/)
  accessUrl: https://book-borrowing-1308110037.cos.ap-chengdu.myqcloud.com/
  region: ap-chengdu

3.工具类

package cn.abtu.config;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;

import com.qcloud.cos.http.HttpProtocol;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

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.region.Region;

/**
 * @ClassName: TxFileUploadUtil
 * @Description: 腾讯云图片上传的工具类
 * @date 2019年1月19日 下午3:46:36
 * @author lpjz@foxmail.com
 *
 */
@Component
public class TencentCosUtil {

    private static String secretId;
    private static String secretKey;
    private static String bucket;
    private static String accessUrl;

    @Value("${tencentCosUtil.secretId}")
    public void setSecretId(String secretId) {
        this.secretId = secretId;
    }

    @Value("${tencentCosUtil.secretKey}")
    public void setSecretKey(String secretKey) {
        this.secretKey = secretKey;
    }

    @Value("${tencentCosUtil.bucket}")
    public void setBucketName(String bucket) {
        this.bucket = bucket;
    }

    @Value("${tencentCosUtil.accessUrl}")
    public void setAccessUrl(String accessUrl) {
        this.accessUrl = accessUrl;
    }

    /**
     * 上传文件
     *
     * @param fileMul
     * @return
     * @throws Exception
     */
    public static String uploadFile(MultipartFile fileMul) throws Exception {
        //临时文件路径(自定义)
        String temporaryFile = "image";
        //效验临时文件是否存在
        File localFile = new File(temporaryFile);
        if (!localFile.exists()) {
            //临时文件不存在,创造临时文件
            localFile.mkdirs();
        }
        //创造临时文件名称
        String fileName = fileMul.getOriginalFilename();
        String name = "/"   RandomStringUtils.randomNumeric(6)   System.currentTimeMillis()   System.nanoTime()   RandomStringUtils.randomNumeric(6)   fileName.substring(fileName.lastIndexOf('.'));
        //创造临时文件图片
        temporaryFile = temporaryFile   name;
        FileOutputStream fos;
        fos = new FileOutputStream(temporaryFile);
        fos.write(fileMul.getBytes());
        fos.flush();
        fos.close();
        // 使用COS
        File file = new File(temporaryFile);
        // 1 初始化用户身份信息(secretId, secretKey)。
        // SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
        // 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
        // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
        Region region = new Region("ap-chengdu");
        ClientConfig clientConfig = new ClientConfig(region);
        // 这里建议设置使用 https 协议
        // 从 5.6.54 版本开始,默认使用了 https
        clientConfig.setHttpProtocol(HttpProtocol.https);
        // 3 生成 cos 客户端。
        COSClient cosClient = new COSClient(cred, clientConfig);
        //格式化时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        //  sdf.format(new Date())   name
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, temporaryFile , file);
        System.out.println(bucket);
        cosClient.putObject(putObjectRequest);
        String saveUrl = accessUrl   putObjectRequest.getKey();
        // 删除用户上传临时文件
        File localImgFile = new File(temporaryFile);
        localImgFile.delete();
        return saveUrl;
    }

    public static String uploadFileByte(BufferedImage bufferedImage) throws Exception {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ImageIO.write(bufferedImage, "png", out);
        //临时文件路径(自定义)
        String temporaryFile = "image";
        //效验临时文件是否存在
        File localFile = new File(temporaryFile);
        if (!localFile.exists()) {
            //临时文件不存在,创造临时文件
            localFile.mkdirs();
        }
        //创造临时文件名称
        String fileName = "base.png";
        String name = "/"   RandomStringUtils.randomNumeric(6)   System.currentTimeMillis()   System.nanoTime()   RandomStringUtils.randomNumeric(6)   fileName.substring(fileName.lastIndexOf('.'));
        //创造临时文件图片
        temporaryFile = temporaryFile   name;
        FileOutputStream fos;
        fos = new FileOutputStream(temporaryFile);
        fos.write(out.toByteArray());
        fos.flush();
        fos.close();
        // 使用COS
        File file = new File(temporaryFile);
        // 1 初始化用户身份信息(secretId, secretKey)。
//        secretId = "AKIDwJmFiXUVRxDOYXcnAYwEOdjmy4zgBc5d";
//        secretKey = "fJwgddaSMet7nfWOQaAf5KqRMBL09Obn";
//        bucket = "book-borrowing-1308110037";
//        accessUrl = "https://book-borrowing-1308110037.cos.ap-chengdu.myqcloud.com/";
        // SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
        // 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
        // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
        Region region = new Region("ap-chengdu");
        ClientConfig clientConfig = new ClientConfig(region);
        // 这里建议设置使用 https 协议
        // 从 5.6.54 版本开始,默认使用了 https
        clientConfig.setHttpProtocol(HttpProtocol.https);
        // 3 生成 cos 客户端。
        COSClient cosClient = new COSClient(cred, clientConfig);
        //格式化时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        //  sdf.format(new Date())   name
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, temporaryFile , file);
        System.out.println(bucket);
        cosClient.putObject(putObjectRequest);
        String saveUrl = accessUrl   putObjectRequest.getKey();
        // 删除用户上传临时文件
        File localImgFile = new File(temporaryFile);
        localImgFile.delete();
        return saveUrl;
    }
}
学新通

3.接口调用

/**
 * 上传文件处理
 * @param file
 * @return
 * @throws Exception
 */
@PostMapping("/uploadFile")
public JSONResult uploadFile(@RequestPart("file") List<MultipartFile> file) throws Exception {
    System.err.println(file);

    ArrayList<String> list = new ArrayList<>();
    for (MultipartFile multipartFile : file) {
        String s = TencentCosUtil.uploadFile(multipartFile);
        list.add(s);
    }
   // TxFileUploadUtil.upLoad(file);
    return JSONResult.success(list);
}
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgakkkc
系列文章
更多 icon
同类精品
更多 icon
继续加载