package cn.sunline.tiny.flow.owner.center.money;
import cn.sunline.tiny.core.FlowCom;
import cn.sunline.tiny.core.JavaFlow;
import cn.sunline.tiny.core.PriCache;
import cn.sunline.tiny.core.PubCache;
import cn.sunline.tiny.util.Tools;
import cn.sunline.tiny.web.Context;
import cn.sunline.tiny.web.cache.SysConfig;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.annotation.Resource;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
* 文件上传(单个/多个)
*
* @author lin
*/
@Component("upload_jsons_flow")
public class upload_jsonsFlow extends JavaFlow {
private static final Logger log = LoggerFactory.getLogger(upload_jsonsFlow.class);
@Resource
private Tools tls;
private static final String UPLOAD_PATH = SysConfig.getInstance().getValue("uploadPath");
@FlowCom(in = "true")
public String flow_1(Context ct, PriCache pri, PubCache pub) {
MultipartHttpServletRequest request = (MultipartHttpServletRequest) ct.getRequest();
//传过来的文件
Map<String, MultipartFile> fileMap = request.getFileMap();
//限制一次传输的文件数量
if (fileMap.size() > Integer.parseInt("10")) {
log.debug("文件数量超出限制:" + fileMap.size() + " > " + "10");
tls.returnFun("800004", ct);
return "";
}
//配置文件
// String uploadPath =UPLOAD_PATH;
String uploadPath ="E:\\mybs\\img";
//路径
String toDay = tls.currentYMDNum();
String dirName =uploadPath+File.separator+toDay+File.separator+System.currentTimeMillis();
//创建带层级的目录
File files = new File(dirName);
if(!files.exists()){
files.mkdirs();
}
List<String> filePathList = new ArrayList<>();
// 循环判断文件类型是否合法
for (Map.Entry<String, MultipartFile> multipartFileEntry : fileMap.entrySet()) {
//前端传过来的文件名
/*
<input type=file name=file1><br>
<input type=file name=file1><br>
multipartFileEntry.getKey() = name 相同即为一个文件
*/
//文件
MultipartFile file = multipartFileEntry.getValue();
//文件原始名
String originalFilename = file.getOriginalFilename();
//文件类型
String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
if (!".JPG,.JPEG,.PNG".toLowerCase().contains(fileType.toLowerCase())) {
log.debug("非法的文件类型:" + fileType);
tls.returnFun("800003", ct);
return "";
}
log.debug("originalFilename"+originalFilename);
//新的文件名
String newFilepath = dirName + File.separator+ UUID.randomUUID()+fileType;
// 判断文件是否存在
if (!new File(newFilepath).exists()) {
try {
//使用此方法保存必须要绝对路径且文件夹必须已存在
file.transferTo(new File(newFilepath));
filePathList.add(newFilepath);
System.out.println("-------------------------------");
} catch (IOException e) {
log.debug("上传失败"+e.getMessage(),e);
e.printStackTrace();
JSONObject output = new JSONObject();
tls.returnFun("999900", ct);
return "";
}
}else{
log.debug("上传失败:文件已存在");
tls.returnFun("999900", ct);
}
}
JSONObject output = new JSONObject();
output.put("filePathList",filePathList);
tls.returnFun("000000", output, ct);
return "";
}
}