com.hn.upload.FileUploadUtil Maven / Gradle / Ivy
package com.hn.upload;
import cn.hutool.core.util.StrUtil;
import com.hn.utils.AssertUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* 描述: 文件上传
*
* @author fei
* 2019-12-20 09:02
*/
public class FileUploadUtil {
// -----------------------------------默认场景的------------------------------------------------------------
/**
* 获取文件访问根地址
*
* @param platform 上传平台
* @return 文件访问根地址
*/
public static String getFileBaseUrl(UploadPlatform platform) {
return getFileBaseUrl(platform, null);
}
/**
* 获取文件临时下载地址
* @param platform 上传平台
* @param key 文件key(路径)
* @param expireTime 过期时间 以分为单位
* @return 下载地址
*/
public static String getTempDownUrl(UploadPlatform platform,String key,Integer expireTime){
return getTempDownUrl(platform, null,key,expireTime);
}
/**
* 获取上传token
*
* @param platform 上传平台
* @return 上传token
*/
public static Object getToken(UploadPlatform platform) {
return getToken(platform, null);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param file {@link MultipartFile}
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, MultipartFile file, String objectName) {
return uploadFile(platform, null, file, objectName);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param file {@link File}
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, File file, String objectName) {
return uploadFile(platform, null, file, objectName);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param file {@link File}
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, File file) {
return uploadFile(platform, null, file);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param inputStream {@link InputStream}
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, InputStream inputStream, String objectName) {
return uploadFile(platform, null, inputStream, objectName);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param filePath 文件路径
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, String filePath, String objectName) {
return uploadFile(platform, null, filePath, objectName);
}
// -------------------------------------带场景的-----------------------------------------------------------
/**
* 获取文件访问根地址
*
* @param platform 上传平台
* @param scene 场景
* @return 文件访问根地址
*/
public static String getFileBaseUrl(UploadPlatform platform, String scene) {
return getFileUpload(platform, scene).getFileBaseUrl();
}
/**
* 获取文件临时下载地址
* @param platform 上传平台
* @param scene 场景
* @param key 文件key(路径)
* @param expireTime 过期时间 以分为单位
* @return 下载地址
*/
public static String getTempDownUrl(UploadPlatform platform, String scene, String key,Integer expireTime){
return getFileUpload(platform, scene).getTempDownUrl(key,expireTime);
}
/**
* 获取上传token
*
* @param platform 上传平台
* @param scene 场景
* @return 上传token
*/
public static Object getToken(UploadPlatform platform, String scene) {
return getFileUpload(platform, scene).getToken();
}
/**
* 文件上传
* @param platform 上传平台
* @param scene 场景
* @param file {@link MultipartFile}
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, String scene, MultipartFile file, String objectName) {
return getFileUpload(platform, scene).uploadFile(file, objectName);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param scene 场景
* @param inputStream {@link InputStream}
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform,String scene,InputStream inputStream, String objectName) {
return getFileUpload(platform,scene).uploadFile(inputStream, objectName);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param scene 场景
* @param file {@link File}
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, String scene, File file, String objectName) {
return getFileUpload(platform, scene).uploadFile(file, objectName);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param scene 场景
* @param file {@link File}
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, String scene, File file) {
return getFileUpload(platform, scene).uploadFile(file);
}
/**
* 文件上传
*
* @param platform 上传平台
* @param scene 场景
* @param filePath 文件路径
* @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
* @return objectName
*/
public static String uploadFile(UploadPlatform platform, String scene, String filePath, String objectName) {
return getFileUpload(platform, scene).uploadFile(filePath, objectName);
}
private FileUploadUtil() {}
private static Map fileUploadMap = new HashMap<>();
private static FileUpload getFileUpload(UploadPlatform platform, String scene) {
String key = platform.name();
if (StrUtil.isNotBlank(scene)) {
key = key.concat(":").concat(scene);
}
FileUpload fileUpload = fileUploadMap.get(key);
if (fileUpload == null) {
fileUpload = platform.create(scene);
AssertUtils.notNull(fileUpload, "暂不支持此平台");
fileUploadMap.put(key, fileUpload);
}
return fileUpload;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy