@RequestMapping("/upload")
@RestController
@IgnoreToken
@SuppressWarnings("all")
public class FilesController extends BaseController {
@Value("${upload.filePath}")
private String filePath;
@Value("${upload.requestPath}")
private String requestPath;
public String getRequestPath() {
return requestPath;
}
public String getFilePath() {
return filePath;
}
@Value("${upload.allowExt}")
private String allowExt;
public String getAllowExt() {
return allowExt;
}
@Value("${upload.fileSize}")
private String fileSize;
public String getFileSize() {
return fileSize;
}
@Value("${spring.application.name}")
private String serviceName;
public String getServiceName() {
return serviceName;
}
@Value("${upload.domain}")
private String hostname;
public String getHostname() {
return hostname;
}
public String getFileName(String fileName) {
if (fileName.length() > 0 && fileName.indexOf(".") > -1) {
String ext;
if (fileName.indexOf("?") > -1 && fileName.lastIndexOf("?") > fileName.lastIndexOf(".")) {
ext = fileName.substring(fileName.lastIndexOf("."), fileName.lastIndexOf("?"));
} else {
ext = fileName.substring(fileName.lastIndexOf("."), fileName.length());
}
if (!checkExt(ext)) {
return "-1";
}
return DateUtil.getCurrentDateStr() + "_" + UtilTools.getUUID() + ext;
}
return "";
}
public boolean checkExt(String ext) {
if (ext.length() == 0) {
return false;
}
String[] params = getAllowExt().split("\\|");
for (int i = 0; i < params.length; i++) {
if (params[i].equals(ext)) {
return true;
}
}
return false;
}
@RequestMapping(value = "/uploadfiles", method = RequestMethod.POST)
public Result loadingIn(MultipartHttpServletRequest mulRequest) throws Exception {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
request.getSession().setAttribute("language", "CN");
Set<Map.Entry<String, MultipartFile>> set = mulRequest.getFileMap().entrySet();
Map<String, String> listFile = new LinkedHashMap<>();
int i = 0;
for (Map.Entry<String, MultipartFile> each : set) {
MultipartFile file = each.getValue();
if (UtilTools.isEmpty(file.getOriginalFilename())) {
continue;
}
String newName = getFileName(file.getOriginalFilename());
if ("-1".equals(newName)) {
return setResult("controller1007");
}
int filesize = Integer.parseInt(getFileSize());
if (file.getSize() > filesize) {
return setResult("controller1008" + UtilTools.fileSizeConver(filesize) + "");
}
i++;
}
if (i == 0) {
return setResult("controller1009");
}
String uploadPath = mulRequest.getParameter("uploadPath");
String filesPath = UtilTools.isEmpty(uploadPath) ? "/" + this.getRequestPath() : "/" + this.getRequestPath() + uploadPath;
uploadfile(filesPath, listFile, set);
return setResult(listFile, "controller1010");
}
public void uploadfile(String filePath, Map<String, String> listFile, Set<Map.Entry<String, MultipartFile>> set) throws Exception {
for (Map.Entry<String, MultipartFile> each : set) {
String fileName = each.getKey();
MultipartFile file = each.getValue();
String uploadFile = file.getOriginalFilename();
if (UtilTools.isEmpty(uploadFile)) {
continue;
}
String newName = getFileName(uploadFile);
if (UtilTools.isEmpty(newName)) {
String originalFilename = file.getOriginalFilename();
if ("file".equals(originalFilename)) {
originalFilename = ".png";
}
newName = DateUtil.getCurrentDateStr() + "_" + UtilTools.getUUID() + originalFilename;
}
listFile.put(fileName, getHostname() + getServiceName() + filePath + newName);
IoUtil.uploadFile(file.getBytes(), filePath, newName);
}
}
@RequestMapping(value = "/uploadBase64File", method = RequestMethod.POST)
@IgnoreSpecialChar
public Result uploadBase64File(String file) throws Exception {
if (UtilTools.isEmpty(file)) {
Map<String, String> paramMap = getParamsMap();
file = paramMap.get("file");
}
Map<String, String> listFile = new LinkedHashMap<>();
String strFilePath = "/" + this.getRequestPath() + "base64File/";
Map<String, MultipartFile> map = new HashMap();
if(file.indexOf(",")==-1){
return setResult("请添加Base64前缀 data:image/png;base64,");
}
map.put("file", base64toMultipart(file));
Set<Map.Entry<String, MultipartFile>> set = map.entrySet();
uploadfile(strFilePath, listFile, set);
return setResult(listFile, "controller1010");
}
public MultipartFile base64toMultipart(String data) {
try {
data = data.replaceAll(" ", "+");
String[] baseStrs = data.split(",");
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = decoder.decodeBuffer(baseStrs[1]);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
return new Base64MultipartFile(b, baseStrs[0], "file");
} catch (IOException e) {
throw new ResultException("controller1008");
}
}
}
public class BaseController extends BaseResult {
private static final Logger log = LoggerFactory.getLogger(BaseController.class);
public String getToken(String token){
Map<String, String> params = new HashMap<>();
if (StringUtils.isBlank(token) ) {
params = getParamsMap();
}else{
params.put("token",token);
}
return params.get("token");
}
public static Map<String, String> getParamsMap() {
Map<String, String> paramsMap = new HashMap<>();
try {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
String json = jsonRequest(request);
if (StringUtils.isNotBlank(json)) {
return JSONObject.parseObject(json, Map.class);
}
} catch (Exception e) {
log.error("base1001", e.getMessage());
}
return paramsMap;
}
@Override
public Result setResult(Object obj,String msg) {
return setResult(obj==null?-1:1, msg,obj==null?new JSONObject():obj);
}
@Override
public Result setResult(String msg) {
return setResult(null,msg);
}
@Override
public Result setResult(int code, String msg, Object obj) {
return new Result(code,msg,obj);
}
@Override
public Result setResult(Object obj){
return setResult(obj,"base1002");
}
}
public abstract class BaseResult {
abstract Result setResult(Object obj);
abstract Result setResult(Object obj,String msg);
abstract Result setResult(String msg);
abstract Result setResult(int code,String msg,Object obj);
}
public abstract class BaseService extends BaseResult {
@Override
public Result setResult(Object obj) {
return setResult(obj,"base1002");
}
@Override
public Result setResult(Object obj,String msg) {
return setResult(obj==null?-1:1, msg, obj==null?new JSONObject():obj);
}
@Override
public Result setResult(String msg) {
return setResult(null,msg);
}
@Override
public Result setResult(int code,String msg,Object obj) {
return new Result(code,msg,obj);
}
public abstract Result checkVaild(Object obj);
public Stream setResultMap(String key,Object value){
return new Stream(new ConcurrentHashMap<>()).add(key,value);
}
public Map<String,Object> setResultMap(){
return setResultMap("result");
}
public Map<String,Object> setResultMap(String key){
return setMap(key,true);
}
public Map<String,Object> setMap(String key,Object value){
Map<String,Object> resultMap = new ConcurrentHashMap<>();
resultMap.put(key,value);
return resultMap;
}
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> map = new ConcurrentHashMap<>();
return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
}
public class UtilTools {
public static final String ALL_CHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static String getUUID(){
return UUID.randomUUID().toString().replaceAll("-","");
}
public static String getRandom(int length,String strChar){
if(strChar.length()==0){return "";}
StringBuffer sb = new StringBuffer();
Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(strChar.charAt(random.nextInt(strChar.length())));
}
return sb.toString();
}
public static String getRandomNumber(int length){
return getRandom(length,ALL_CHAR.substring(0,10));
}
public static String getRandomChar(int length){
return getRandom(length,ALL_CHAR);
}
public static String getRandom(){return getRandomNumber(6);}
public static String fileSizeConver(int fileSize)
{
DecimalFormat df = new DecimalFormat("#");
String fileSizeString = "";
String wrongSize="0B";
if(fileSize==0){
return wrongSize;
}
if (fileSize < 1024){
fileSizeString = df.format(fileSize) + "B";
}
else if (fileSize < 1048576){
fileSizeString = df.format(fileSize / 1024) + "KB";
}
else if (fileSize < 1073741824){
fileSizeString = df.format(fileSize / 1048576) + "MB";
}
else{
fileSizeString = df.format(fileSize / 1073741824) + "GB";
}
return fileSizeString;
}
public static boolean isNumber(String str) {
if (str != null && !"".equals(str)) {
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("[0-9]*");
java.util.regex.Matcher match = pattern.matcher(str);
return match.matches();
} else {
return false;
}
}
public static boolean isEmpty(String val) {
if (val == null || val.length() == 0 || "null".equalsIgnoreCase(val)) {
return true;
} else {
return false;
}
}
public static String deCodeStr(String text) throws UnsupportedEncodingException{
String str="";
if(!isEmpty(text)){
str= URLDecoder.decode(text,"UTF-8");
}
return str;
}
public static JSONObject getJsonObject(Object object){
return JSON.parseObject(object.toString());
}
public static Map<String, Object> object2Map(Object obj) {
Map<String, Object> map = new HashMap<>();
if (obj == null) {
return map;
}
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
try {
for (Field field : fields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
public static String supplementNum(String str,int num){
if(str.length()<num){
str="0"+str;
}else{
return str;
}
return supplementNum(str,num);
}
public static Integer connectAD(String host,String post,String username,String password) {
DirContext ctx=null;
int isLogin = 0;
Hashtable<String,String> hashEnv = new Hashtable<String,String>();
hashEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
hashEnv.put(Context.SECURITY_PRINCIPAL, username!=null?username:"");
hashEnv.put(Context.SECURITY_CREDENTIALS, password!=null?password:"");
hashEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
hashEnv.put("com.sun.jndi.ldap.connect.timeout","3000");
hashEnv.put(Context.PROVIDER_URL," ldap://" + host + ":" + post);
try {
if(password!=null&&!"".equals(password)){
ctx = new InitialDirContext(hashEnv);
isLogin = 1;
}else{
isLogin = 0;
}
} catch (AuthenticationException e) {
e.printStackTrace();
isLogin = 0;
} catch (javax.naming.CommunicationException e) {
e.printStackTrace();
isLogin = -1;
} catch (Exception e) {
e.printStackTrace();
isLogin = -1;
} finally{
if(null!=ctx){
try {
ctx.close();
ctx=null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
return isLogin;
}
public static String getIpAddr() {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
String ipAddress = null;
ipAddress = request.getHeader("x-forwarded-for");
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if("127.0.0.1".equals(ipAddress) || "0:0:0:0:0:0:0:1".equals(ipAddress)){
InetAddress inet=null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress= inet.getHostAddress();
}
}
if(ipAddress!=null && ipAddress.length()>15){
if(ipAddress.indexOf(",")>0){
ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
}
}
return ipAddress;
}
public static String toSBC(String input) {
char [] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == ' ') {
c[i] = '\u3000';
} else if (c[i] < '\177') {
c[i] = (char) (c[i] + 65248);
}
}
return new String(c);
}
public static String toDBC(String input) {
char [] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == '\u3000') {
c[i] = ' ';
} else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
c[i] = (char) (c[i] - 65248);
}
}
return new String(c);
}
}
import java.io.*;
public class IoUtil {
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
File targetFile = new File(filePath);
if(!targetFile.exists()){
targetFile.mkdirs();
}
FileOutputStream out = new FileOutputStream(filePath+fileName);
out.write(file);
out.flush();
out.close();
}
public static boolean isUsefile(File file){
if(!file.renameTo(file)){
System.out.println("文件正在被使用中...");
return true;
}else{
return false;
}
}
public static ByteArrayOutputStream parseOut(InputStream in){
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
try {
int ch;
while ((ch = in.read()) != -1) {
swapStream.write(ch);
}
} catch (IOException e) {
}
return swapStream;
}
public static ByteArrayInputStream parseIn(byte[] buffer){
return new ByteArrayInputStream(buffer);
}
public static String getFileContent(String path) {
String result="";
try {
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
String str = br.readLine();
result=str;
while (str != null)
{
System.out.println(str);
str = br.readLine();
if(str!=null){
result+=str;
}
}
br.close();
fr.close();
} catch (IOException e)
{
System.out.println("指定文件不存在");
}
return result;
}
public static String getFileUrl(String path) {
String result="";
try {
String resource = Thread.currentThread().getContextClassLoader().getResource("").getPath();
String currentDirectory = System.getProperty("user.dir");
} catch (IOException e)
{
System.out.println("指定文件不存在");
}
return result;
}
}