一、首页引入maven依赖sdk
<!-- 阿里oss -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
二、application.yml配置,配置信息去阿里云控制台创建生成
aliyun:
oss:
endpoint: oss-cn-guangzhou.aliyuncs.com
access-key-id: xxx
access-key-secret: xxx
bucket-name: xxx
domain-name: https://xxx.xxx.com/
三、工具类贴起来
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.internal.OSSHeaders;
import com.aliyun.oss.model.*;
import com.chengtian.le.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.Date;
@Component
public class OssUtils {
@Value("${aliyun.oss.endpoint}")
private String endpoint;
@Value("${aliyun.oss.access-key-id}")
private String accessKeyId;
@Value("${aliyun.oss.access-key-secret}")
private String accessKeySecret;
@Value("${aliyun.oss.bucket-name}")
private String bucketName;
private OSS getOssClient() {
return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
}
/**
* 文件上传
*
* @param file 文件s
* @param folder 文件目录
* @return
*/
public String fileUpload(File file, String folder) {
OSS client = getOssClient();
String fileName = getFileName(file.getName());
String finalFileName = folder + File.separatorChar + fileName;
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, finalFileName, file);
// 文件权限
ObjectMetadata metadata = new ObjectMetadata();
metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
metadata.setObjectAcl(CannedAccessControlList.PublicRead);
putObjectRequest.setMetadata(metadata);
PutObjectResult putObjectResult = client.putObject(putObjectRequest);
JSONObject.toJSONString(putObjectResult);
} catch (OSSException | ClientException oe) {
oe.printStackTrace();
} finally {
client.shutdown();
}
return finalFileName;
}
/**
* 生成文件名
*
* @param oldName 原来文件名
* @return
*/
private String getFileName(String oldName) {
String[] split = oldName.split("\\.");
String format = DateUtils.format(new Date(), DateUtils.DATE_YEAR_MONTH_DAT_JOIN_FORMAT);
return format + "_" + System.currentTimeMillis() + "." + split[1];
}
}