以正斜线结尾 如:"exampledir/"。
* @param multipartFile multipartFile
* @return
*/
@SneakyThrows
public static String upload(String folder, MultipartFile multipartFile) {
InputStream inputStream = null;
OSS ossClient = new OSSClientBuilder().build(aliYunOSSUtil.ossConfig.getEndpoint(),
aliYunOSSUtil.ossConfig.getAccessKeyId(), aliYunOSSUtil.ossConfig.getAccessKeySecret());
String url = "";
try {
inputStream = multipartFile.getInputStream();
String fileName = multipartFile.getOriginalFilename();
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
ObjectMetadata metadata = new ObjectMetadata();
int indexOfLastDot = fileName.lastIndexOf(".");
String suffix = fileName.substring(indexOfLastDot);
fileName = uuid + suffix;
String datePath = DateTimeFormatter.ISO_DATE.format(LocalDate.now());
// 拼接fileName , 文件夹1/文件夹2/文件名.jpg
fileName = folder + datePath + "/" + fileName;
metadata.setContentType(getContentType(suffix));
PutObjectRequest putObjectRequest = new PutObjectRequest(aliYunOSSUtil.ossConfig.getBucket(), fileName, inputStream);
//设置ContentType,预览
putObjectRequest.setMetadata(metadata);
ossClient.putObject(putObjectRequest);
url = "https://"
+ aliYunOSSUtil.ossConfig.getBucket()
+ "."
+ aliYunOSSUtil.ossConfig.getEndpoint()
+ "/"
+ fileName;
} catch (OSSException oe) {
logger.error("请求已发送到OSS,但由于某种原因被拒绝并出现错误响应");
logger.error("Error Message:[{}]", oe.getErrorMessage());
logger.error("Error Code:[{}]", oe.getErrorCode());
logger.error("Request ID:[{}]", oe.getRequestId());
logger.error("Host ID:[{}]", oe.getHostId());
} catch (ClientException ce) {
logger.error("客户端在尝试与OSS通信时遇到问题");
logger.error("Error Message:[{}]", ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return url;
}
/**
* 判断类型
* @param suffix 文件后缀
* @return
*/
private static String getContentType(String suffix) {
if (suffix.equalsIgnoreCase(".bmp")) {
return "image/bmp";
}
if (suffix.equalsIgnoreCase(".gif")) {
return "image/gif";
}
if (suffix.equalsIgnoreCase(".jpeg") ||
suffix.equalsIgnoreCase(".jpg") ||
suffix.equalsIgnoreCase(".png")
) {
return "image/jpg";
}
return "image/jpg";
}
/**
* 列举 指定路径下所有的文件的文件名
* 如果要列出根路径下的所有文件,path= ""
*
* @param path
* @return
*/
public static List<String> listFileName(String path) {
List<String> list = new ArrayList<>();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(aliYunOSSUtil.ossConfig.getEndpoint()
, aliYunOSSUtil.ossConfig.getAccessKeyId()
, aliYunOSSUtil.ossConfig.getAccessKeySecret());
try {
// 设置最大个数。
final int maxKeys = 300;
// 构造ListObjectsRequest请求。
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(aliYunOSSUtil.ossConfig.getBucket());
// 设置prefix参数来获取path目录下的所有文件。
listObjectsRequest.setPrefix(path);
listObjectsRequest.setMaxKeys(maxKeys);
// 列举文件。
ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
List<OSSObjectSummary> objectSumm |