阿里云OSS工具类 springboot

 

 

阿里云oss maven依赖

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

阿里云oss 配置项

aliyun:
  appid: xxxx
  appscrete: xxxx
  oss:
    domain: https://oss.xxx.com/
    endpoint: oss-cn-shenzhen.aliyuncs.com
    bucket-name: xxx-bucket

封装工具类

package com.lhn.aliyun.utils;

import com.aliyun.oss.ClientConfiguration;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.model.ObjectMetadata;
import com.lhn.spring.util.SpringContextUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.env.Environment;
import org.springframework.util.Base64Utils;
import org.springframework.web.multipart.MultipartFile;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * 阿里云OSS工具类
 *
 * @author lianhuinan
 * @since 2022/4/12 16:30
 */
public class OssUtil {

   private final static String ossAccessDomainUrl; private final static String ossBucketName; private final static OSSClient client; static { Environment environment = SpringContextUtil.getBean(Environment.class); String endpointUrl = environment.getProperty("aliyun.oss.endpoint"); ossBucketName = environment.getProperty("aliyun.oss.bucket-name"); String keyId = environment.getProperty("aliyun.appid"); String keySecret = environment.getProperty("aliyun.appsecret"); ossAccessDomainUrl = environment.getProperty("aliyun.oss.domain"); client = new OSSClient(endpointUrl, CredentialsProviderFactory.newDefaultCredentialProvider(keyId, keySecret), new ClientConfiguration()); } /** * @param fileName 用户文件名称 * @return 实际的cos上文件名称 */ private static String getRealFileName(String saveFolder, String fileName) { return StringUtils.isNotEmpty(saveFolder) ? saveFolder + "/" + fileName : fileName; } public static String upload(String saveFolder, String contentType, String fileName, InputStream input) { if (StringUtils.isEmpty(fileName) || StringUtils.isEmpty(contentType) || null == input) { return null; } ObjectMetadata objectMeta = new ObjectMetadata(); objectMeta.setContentType(contentType); String filePath = getRealFileName(saveFolder, fileName); try { client.putObject(ossBucketName, filePath, input, objectMeta); return ossAccessDomainUrl + filePath; } catch (Exception e) { e.printStackTrace(); return null; } finally { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } public static String upload(String saveFolder, String contentType, String fileName, long contentLength, InputStream input) { if (StringUtils.isEmpty(fileName) || StringUtils.isEmpty(contentType) || contentLength <= 0 || null == input) { return null; } ObjectMetadata objectMeta = new ObjectMetadata(); objectMeta.setContentLength(contentLength); objectMeta.setContentType(contentType); String filePath = getRealFileName(saveFolder, fileName); try { client.putObject(ossBucketName, filePath, input, objectMeta); return ossAccessDomainUrl + filePath; } catch (Exception e) { e.printStackTrace(); return null; } finally { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } public static String upload(String saveFolder, String fileMainName, MultipartFile multipartFile) { if (null != multipartFile && !multipartFile.isEmpty()) { try { String filename = multipartFile.getOriginalFilename(); String extFileName; if (StringUtils.isNotEmpty(filename)) { extFileName = filename.substring(filename.lastIndexOf(".")); } else { extFileName = ".jpg"; } return upload(saveFolder, multipartFile.getContentType(), fileMainName + extFileName, multipartFile.getSize(), multipartFile.getInputStream()); } catch (IOException e) { e.printStackTrace(); } } return null; } public static String upload4SpecialName(String saveFolder, String fileName, MultipartFile multipartFile) { if (null != multipartFile && !multipartFile.isEmpty()) { try { return upload(saveFolder, multipartFile.getContentType(), fileName, multipartFile.getSize(), multipartFile.getInputStream()); } catch (IOException e) { e.printStackTrace(); } } return null; } public static String uploadImgByBase64(String saveFolder, String fileName, String base64ImgContent) { if (StringUtils.isEmpty(fileName) || StringUtils.isEmpty(base64ImgContent)) { return null; } try { byte[] bytes = Base64Utils.decodeFromString(base64ImgContent); return upload(saveFolder, "image/jpg", fileName, bytes.length, new ByteArrayInputStream(bytes)); } catch (Exception e) { e.printStackTrace(); return null; } } public static void delete(String fileUrl) { if (StringUtils.isEmpty(fileUrl)) { return; } try { fileUrl = fileUrl.replaceFirst(ossAccessDomainUrl, ""); client.deleteObject(ossBucketName, fileUrl); } catch (OSSException | ClientException e) { e.printStackTrace(); } } public static String getByFileName(String pathFile) { return ossAccessDomainUrl + client.getObject(ossBucketName, pathFile).getKey(); } }

获取上下文工具类

package com.lhn.spring.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * Spring工具类,获取Spring上下文对象等
 * @author lianhuinan
 * @since 2021/11/08 21:11 
 */
@Component
public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if(SpringContextUtil.applicationContext == null){
            SpringContextUtil.applicationContext  = applicationContext;
        }
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static Object getBean(String name){
        return getApplicationContext().getBean(name);
    }

    public static <T> T getBean(Class<T> clazz){
        return getApplicationContext().getBean(clazz);
    }

    public static <T> T getBean(String name,Class<T> clazz){
        return getApplicationContext().getBean(name, clazz);
    }
}

 

posted @ 2022-04-12 20:58  苏戏  阅读(914)  评论(0编辑  收藏  举报