pom.xml配置jar包
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency>
yml配置相关key
oss:accessKey: accessKeysecretKey: secretKeyendpoint: https://oss-cn-hangzhou.aliyuncs.combucketName: hsope-testobjectName: rental/
封装的OSSUtils
package com.db.common.utils.oss;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import com.db.common.utils.DateUtils;
import com.db.common.utils.uuid.UUID;
import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Date;@Component
public class OSSUtils {private static final Logger log = LoggerFactory.getLogger(OSSUtils.class);private static String accessKey;private static String secretKey;private static String endpoint;private static String bucketName;private static String objectName;@Value("${oss.accessKey}")public void setAccessKey(String accessKey) {OSSUtils.accessKey = accessKey;}@Value("${oss.secretKey}")public void setSecretKey(String secretKey) {OSSUtils.secretKey = secretKey;}@Value("${oss.endpoint}")public void setEndpoint(String endpoint) {OSSUtils.endpoint = endpoint;}@Value("${oss.bucketName}")public void setBucketName(String bucketName) {OSSUtils.bucketName = bucketName;}@Value("${oss.objectName}")public void setObjectNamee(String objectName) {OSSUtils.objectName = objectName;}private static final Long DEFAULT_EXPIRATION_TIME = 3600 * 1000 * 24 * 365 * 10L;private static OSS ossClient = null;public static void createClient() {ossClient = new OSSClientBuilder().build(endpoint, accessKey, secretKey);}public static String upload(InputStream inputStream, String fileName) {if (ossClient == null) {createClient();}if (!ossClient.doesBucketExist(bucketName)) {ossClient.createBucket(bucketName);}ossClient.putObject(bucketName, fileName, inputStream);log.info("文件上传成功:{}", fileName);
return getUrl(fileName);}public InputStream dowload(String key){if (ossClient == null) {createClient();}OSSObject object = ossClient.getObject(bucketName, key);return object.getObjectContent();}public void delete(String key){if (ossClient == null) {createClient();}ossClient.deleteObject(bucketName, key);log.info("文件删除成功:{}", key);}public static String uploadBase64(String base64){String fileExt = "jpeg";if (base64.contains(";base64,")) {base64 = base64.split(",")[1];}String date = DateUtils.getNowShDate()+"/";String fileName = objectName + date + UUID.randomUUID().toString().replace("-","") + "." + fileExt;return upload(new ByteArrayInputStream(Base64.decodeBase64(base64)),fileName);}public static String getUrl(String fileName){if (ossClient == null) {createClient();}Date expiration = new Date(DateUtils.parseDate(DateUtils.getNowTime()).getTime() + DEFAULT_EXPIRATION_TIME );URL url = ossClient.generatePresignedUrl(bucketName, fileName, expiration);if(url == null){log.info("文件上传失败:{}", fileName);}return "https://" + url.getHost() + url.getPath();}public static String getUrlByExpiration(String imageUrl) {if (ossClient == null) {createClient();}String fileName = objectName + imageUrl.split(objectName)[1];Date expiration = new Date(DateUtils.parseDate(DateUtils.getNowTime()).getTime() + 1000 * 60 * 10 );URL url = ossClient.generatePresignedUrl(bucketName, fileName, expiration);return url == null ? null : url.toString();}public static String fileToBase64(String filePath) throws IOException {byte[] fileContent = Files.readAllBytes(Paths.get(filePath));return java.util.Base64.getEncoder().encodeToString(fileContent);}public static String getImgStr(String imgFile) {try {File tempFile = File.createTempFile("temp-", ".jpg");cn.hutool.http.HttpUtil.downloadFileFromUrl(imgFile,tempFile,3000);String base64str = fileToBase64(tempFile.getAbsolutePath());tempFile.delete();return base64str;} catch (Exception e) {e.printStackTrace();return "1";}}public static void main(String[] args) {OSSUtils ossUtils = new OSSUtils();String s = ossUtils.uploadBase64("");System.out.println("---------"+s);}
}