所需jar包
<!-- oss文件服务器-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.3</version>
</dependency>
工具类:
OSSUploadUtil
package com.hxf.application.util.ossfileutil;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import org.springframework.stereotype.Component;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* @program: demo
* @description: oss
* @create: 2018-12-18 17:08
**/
@Component
public class OSSUploadUtil {
private static OSSConfig config = null;
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
/**
* @param file
* @param fileType 文件后缀
* @oaram business 业务目录
* @return String 文件地址
* @MethodName: uploadFile
* @Description: OSS单文件上传
*/
public static String uploadFile(File file, String fileType,String business) {
config = config == null ? new OSSConfig() : config;
String fileName = business +"/"+sdf.format(new Date()) +"/"+ UUID.randomUUID().toString().toUpperCase().replace("-", "") + "." + fileType; //文件名,根据UUID来
return putObject(file, fileType, fileName);
}
/**
* @param file
* @param fileType 文件后缀
* @return String 文件地址
* @MethodName: uploadFile
* @Description: OSS单文件上传
*/
public static String uploadFile(File file, String fileType) {
config = config == null ? new OSSConfig() : config;
String fileName = sdf.format(new Date()) +"/"+ UUID.randomUUID().toString().toUpperCase().replace("-", "") + "." + fileType; //文件名,根据UUID来
return putObject(file, fileType, fileName);
}
/**
* @param file
* @param fileType
* @param oldUrl
* @return String
* @MethodName: updateFile
* @Description: 更新文件:只更新内容,不更新文件名和文件地址。
* (因为地址没变,可能存在浏览器原数据缓存,不能及时加载新数据,例如图片更新,请注意)
*/
public static String updateFile(File file, String fileType, String oldUrl) {
if (oldUrl == null) return null;
return putObject(file, fileType, oldUrl);
}
/**
* @param file
* @param fileType 文件后缀
* @param oldUrl 需要删除的文件地址
* @return String 文件地址
* @MethodName: replaceFile
* @Description: 替换文件:删除原文件并上传新文件,文件名和地址同时替换
* 解决原数据缓存问题,只要更新了地址,就能重新加载数据)
*/
public static String replaceFile(File file, String fileType, String oldUrl) {
boolean flag = deleteFile(oldUrl); //先删除原文件
if (!flag) {
//更改文件的过期时间,让他到期自动删除。
}
return uploadFile(file, fileType);
}
/**
* @param fileUrl 需要删除的文件url
* @return boolean 是否删除成功
* @MethodName: deleteFile
* @Description: 单文件删除
*/
public static boolean deleteFile(String fileUrl) {
config = config == null ? new OSSConfig() : config;
String url = "http://" +config.getBucketName() + "." + config.getEndpo