@Component
public class FileUploadUtil {
private static final Logger logger = LoggerFactory.getLogger(FileUploadUtil.class);
static final Decoder decoder = Base64.getDecoder();
private static String endpoint;
private static String accesskey;
private static String accessKeySecret;
private static String bucketName;
private static String accessUrl;
public FileUploadUtil() {
}
@Value("${aliyun.endpoint}")
public void setEndpoint(String endpoint) {
endpoint = endpoint;
}
@Value("${aliyun.accesskey}")
public void setAccesskey(String accesskey) {
accesskey = accesskey;
}
@Value("${aliyun.accessKeySecret}")
public void setAccessKeySecret(String accessKeySecret) {
accessKeySecret = accessKeySecret;
}
@Value("${aliyun.bucketName}")
public void setBucketName(String bucketName) {
bucketName = bucketName;
}
@Value("${aliyun.accessUrl}")
public void setAccessUrl(String accessUrl) {
accessUrl = accessUrl;
}
public static Map<String, Object> multipartFileToFile(MultipartFile file, OssConfig ossConfig, Boolean b) throws Exception {
Map<String, Object> m = new HashMap();
int begin = file.getOriginalFilename().lastIndexOf(".");
int last = file.getOriginalFilename().length();
String a = file.getOriginalFilename().substring(begin, last);
byte[] byteArr = file.getBytes();
InputStream inputStream = new ByteArrayInputStream(byteArr);
String url = uploadTempFileToOSS(inputStream, b, ossConfig, a);
m.put("fileName", file.getOriginalFilename());
m.put("fileSize", file.getSize());
m.put("fileType", a);
m.put("url", url);
return m;
}
public static Map<String, Object> base64StringToFile(String base64, OssConfig ossConfig, Boolean b, String fileName) throws Exception {
Map<String, Object> m = new HashMap();
int begin = fileName.lastIndexOf(".");
int last = fileName.length();
String a = fileName.substring(begin, last);
m.put("fileName", fileName);
m.put("fileType", a);
byte[] bytes = decoder.decode(base64.trim());
m.put("fileSize", bytes.length);
InputStream inputStream = new ByteArrayInputStream(bytes);
String url = uploadTempFileToOSS(inputStream, b, ossConfig, a);
m.put("url", url);
return m;
}
public static String uploadTempFileToOSS(InputStream file, Boolean isSecret, OssConfig ossConfig, String filetype) {
logger.info("cValidate(filetype):" + cValidate(filetype));
if (!cValidate(filetype)) {
throw new ZTBusinessException("失败", "文件格式不正确");
} else {
String fileName;
if (isSecret) {
if (!ossConfig.getBucketName().contains("-secret")) {
ossConfig.setBucketName(ossConfig.getBucketName() + "-secret");
}
} else if (ossConfig.getBucketName().contains("-secret")) {
fileName = ossConfig.getBucketName().substring(0, ossConfig.getBucketName().length() - "-secret".length());
ossConfig.setBucketName(fileName);
}
fileName = IDUtil.getUUID() + filetype;
String uploadPath = "cccc_temp/temp";
String url = OssUtil.uploadFileByInputStream(fileName, ossConfig, file, uploadPath);
return url;
}
}
public static InputStream downloadFile(String url, OssConfig ossConfig, String isSecret) {
if (url.contains("home/upload/")) {
ossConfig = new OssConfig();
ossConfig.setBucketName(bucketName);
ossConfig.setAccessKeyId(accesskey);
ossConfig.setAccessKeySecret(accessKeySecret);
ossConfig.setAccessUrl(accessUrl);
ossConfig.setEndpoint(endpoint);
}
if (ossConfig.getBucketName().contains("-secret")) {
String temp = ossConfig.getBucketName().substring(0, ossConfig.getBucketName().length() - "-secret".length());
System.err.println(temp);
ossConfig.setBucketName(temp);
}
logger.info("下载文件路径 OSS绝对路径:" + url);
if (null != url && !"".equals(url)) {
String key = url.substring(url.lastIndexOf("/") + 1, url.length());
logger.info("下载文件路径 key值:" + key);
InputStream file = OssUtil.downloadByInputStream(url, ossConfig);
return file;
} else {
return null;
}
}
public static InputStream downloadFileSec(String url, OssConfig ossConfig, String isSecret) {
if (url.contains("home/upload")) {
ossConfig = new OssConfig();
ossConfig.setBucketName(bucketName);
ossConfig.setAccessKeyId(accesskey);
ossConfig.setAccessKeySecret(accessKeySecret);
ossConfig.setAccessUrl(accessUrl);
ossConfig.setEndpoint(endpoint);
logger.info("ossConfig" + ossConfig.toString());
}
if (!ossConfig.getBucketName().contains("-secret")) {
ossConfig.setBucketName(ossConfig.getBucketName() + "-secret");
}
logger.info("下载文件路径 OSS绝对路径:" + url);
if (null != url && !"".equals(url)) {
String key = url.substring(url.lastIndexOf("/") + 1, url.length());
logger.info("下载文件路径 key值:" + key);
InputStream file = OssUtil.downloadByInputStream(url, ossConfig);
return file;
} else {
return null;
}
}
public static String getFileName(String key) {
String[] temp = key.split("/");
String fileName = temp[temp.length - 1];
return fileName;
}
public static File getFile(InputStream in, String destFileName) {
File file = null;
try {
file = new File(destFileName);
try {
FileOutputStream fout = new FileOutputStream(file);
int l = true;
byte[] tmp = new byte[1024];
int l;
while((l = in.read(tmp)) != -1) {
fout.write(tmp, 0, l);
}
fout.flush();
fout.close();
} catch (Exception var10) {
var10.printStackTrace();
} finally {
in.close();
}
} catch (Exception var12) {
var12.printStackTrace();
}
return file;
}
private static boolean cValidate(String str) {
str = str.toLowerCase();
String badStr = ".jpg,.png,.jpeg,.gif,.xls,.xlsx,.doc,.docx,.txt,.pdf,.JPG,.bmp,.webp,.tiff,.pptxv,.zip,.rar,.7z,.lzh,.rft,.msg,.wps,.dps,.vsd,.prn,.ai,.cad,.et,.swf,.ppt,.jpe,.ofd,.OFD,.pptx,.tif,.jfif,.kz,.dat,.GCFX,.eszf,.oxps,.amr,.pic,.eps,.xdf,.DXF,.xps,.rtf,";
String[] badStrs = badStr.split(",");
logger.info("下载文件类型:" + str);
for(int i = 0; i < badStrs.length; ++i) {
if (str.equals(badStrs[i])) {
return true;
}
}
return false;
}
}
文件上传处理工具类(阿里云)
最新推荐文章于 2024-08-06 13:10:12 发布