163 lines
5.1 KiB
Java
163 lines
5.1 KiB
Java
package com.bwie.orders.utils;
|
||
|
||
import com.aliyun.oss.OSS;
|
||
import com.aliyun.oss.OSSClientBuilder;
|
||
import com.aliyun.oss.model.GetObjectRequest;
|
||
import com.aliyun.oss.model.PutObjectRequest;
|
||
import lombok.extern.log4j.Log4j2;
|
||
import org.springframework.web.multipart.MultipartFile;
|
||
|
||
import java.io.*;
|
||
import java.time.LocalDateTime;
|
||
import java.util.UUID;
|
||
|
||
/**
|
||
* Oss服务调用
|
||
*/
|
||
@Log4j2
|
||
public class OssUtil {
|
||
|
||
/**
|
||
* Endpoint 存储对象概述 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 访问路径前缀 存储对象概述
|
||
*/
|
||
private static String endPoint = "oss-cn-shanghai.aliyuncs.com";
|
||
private static String accessKeyId = "LTAI5tDbRqXkC5i3SMrCSDcX";
|
||
private static String accessKeySecret = "XUzMZoHPLsjNLafHsdQnMElBWZATsu";
|
||
private static String accessPre = "https://mall-bw.oss-cn-shanghai.aliyuncs.com/";
|
||
|
||
/**
|
||
* bucket名称
|
||
*
|
||
* @return
|
||
*/
|
||
private static String bucketName = "mall-bw";
|
||
|
||
private static OSS ossClient;
|
||
|
||
static {
|
||
ossClient = new OSSClientBuilder().build(
|
||
endPoint,
|
||
accessKeyId,
|
||
accessKeySecret);
|
||
log.info("oss服务连接成功!");
|
||
}
|
||
|
||
/**
|
||
* 默认路径上传本地文件
|
||
*
|
||
* @param filePath
|
||
*/
|
||
public static String uploadFile(String filePath) {
|
||
return uploadFileForBucket(bucketName, getOssFilePath(filePath), filePath);
|
||
}
|
||
|
||
/**
|
||
* 默认路径上传multipartFile文件
|
||
*
|
||
* @param multipartFile
|
||
*/
|
||
public static String uploadMultipartFile(MultipartFile multipartFile) {
|
||
return uploadMultipartFile(bucketName, getOssFilePath(multipartFile.getOriginalFilename()), multipartFile);
|
||
}
|
||
|
||
/**
|
||
* 上传 multipartFile 类型文件
|
||
*
|
||
* @param bucketName
|
||
* @param ossPath
|
||
* @param multipartFile
|
||
*/
|
||
public static String uploadMultipartFile(String bucketName, String ossPath, MultipartFile multipartFile) {
|
||
InputStream inputStream = null;
|
||
try {
|
||
inputStream = multipartFile.getInputStream();
|
||
} catch (IOException e) {
|
||
e.printStackTrace();
|
||
}
|
||
uploadFileInputStreamForBucket(bucketName, ossPath, inputStream);
|
||
return accessPre + ossPath;
|
||
}
|
||
|
||
/**
|
||
* 使用File上传PutObject上传文件 ** 程序默认使用次方法上传
|
||
*
|
||
* @param bucketName 实例名称
|
||
* @param ossPath oss存储路径
|
||
* @param filePath 本地文件路径
|
||
*/
|
||
public static String uploadFileForBucket(String bucketName, String ossPath, String filePath) {
|
||
// 创建PutObjectRequest对象。
|
||
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, ossPath, new File(filePath));
|
||
|
||
// 上传
|
||
ossClient.putObject(putObjectRequest);
|
||
return accessPre + ossPath;
|
||
}
|
||
|
||
/**
|
||
* 使用文件流上传到指定的bucket实例
|
||
*
|
||
* @param bucketName 实例名称
|
||
* @param ossPath oss存储路径
|
||
* @param filePath 本地文件路径
|
||
*/
|
||
public static String uploadFileInputStreamForBucket(String bucketName, String ossPath, String filePath) {
|
||
|
||
// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
|
||
InputStream inputStream = null;
|
||
try {
|
||
inputStream = new FileInputStream(filePath);
|
||
} catch (FileNotFoundException e) {
|
||
e.printStackTrace();
|
||
}
|
||
// 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
|
||
uploadFileInputStreamForBucket(bucketName, ossPath, inputStream);
|
||
return accessPre + ossPath;
|
||
}
|
||
|
||
public static void uploadFileInputStreamForBucket(String bucketName, String ossPath, InputStream inputStream) {
|
||
ossClient.putObject(bucketName, ossPath, inputStream);
|
||
}
|
||
|
||
/**
|
||
* 下载
|
||
*
|
||
* @param ossFilePath
|
||
* @param filePath
|
||
*/
|
||
public static void downloadFile(String ossFilePath, String filePath) {
|
||
downloadFileForBucket(bucketName, ossFilePath, filePath);
|
||
}
|
||
|
||
/**
|
||
* 下载
|
||
*
|
||
* @param bucketName 实例名称
|
||
* @param ossFilePath oss存储路径
|
||
* @param filePath 本地文件路径
|
||
*/
|
||
public static void downloadFileForBucket(String bucketName, String ossFilePath, String filePath) {
|
||
ossClient.getObject(new GetObjectRequest(bucketName, ossFilePath), new File(filePath));
|
||
}
|
||
|
||
/**
|
||
* @return
|
||
*/
|
||
public static String getOssDefaultPath() {
|
||
LocalDateTime now = LocalDateTime.now();
|
||
String url =
|
||
now.getYear() + "/" +
|
||
now.getMonth() + "/" +
|
||
now.getDayOfMonth() + "/" +
|
||
now.getHour() + "/" +
|
||
now.getMinute() + "/";
|
||
return url;
|
||
}
|
||
|
||
public static String getOssFilePath(String filePath) {
|
||
String fileSuf = filePath.substring(filePath.indexOf(".") + 1);
|
||
return getOssDefaultPath() + UUID.randomUUID().toString() + "." + fileSuf;
|
||
}
|
||
|
||
}
|