初次联调,导入excel

web_backend_develope
chenlw 9 years ago
parent de3ed10133
commit 79ba4feb46

@ -3,9 +3,12 @@ package com.platform.controller;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.PrintWriter;
import java.io.RandomAccessFile; import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -17,6 +20,8 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -26,6 +31,7 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
@ -99,17 +105,20 @@ public class ExcelController extends BaseController{
resumableChunkNumber)); resumableChunkNumber));
if (info.checkIfUploadFinished()) { // Check if all chunks uploaded, if (info.checkIfUploadFinished()) { // Check if all chunks uploaded,
// and change filename // and change filename
log.info(info.resumableFilename);
ResumableInfoStorage.getInstance().remove(info); ResumableInfoStorage.getInstance().remove(info);
response.getWriter().print("All finished."); response.getWriter().print("All finished.");
//开始导入excel
} else { } else {
response.getWriter().print("Upload"); response.getWriter().print("Upload");
} }
} else { // 不处理非GET/POST请求 } else { // 不处理非GET/POST请求
throw new IllegalStateException("只接受 POST或GET请求"); throw new IllegalStateException("只接受 POST或GET请求");
} }
log.info("----");
} }
// 文件下载处理函数 // 文件下载处理函数
@RequestMapping(value = "/file/download") @RequestMapping(value = "/file/download")
public ResponseEntity<byte[]> download(HttpServletRequest request, public ResponseEntity<byte[]> download(HttpServletRequest request,
@ -134,7 +143,7 @@ public class ExcelController extends BaseController{
// 文件上传处理函数 // 文件上传处理函数
private ResumableInfo getResumableInfo(HttpServletRequest request) private ResumableInfo getResumableInfo(HttpServletRequest request)
throws ServletException { throws ServletException, IOException {
String base_dir = Configs.FILE_UPLOAD_PATH; String base_dir = Configs.FILE_UPLOAD_PATH;
int resumableChunkSize = HttpUtils.toInt( int resumableChunkSize = HttpUtils.toInt(
@ -143,7 +152,9 @@ public class ExcelController extends BaseController{
request.getParameter("resumableTotalSize"), -1); request.getParameter("resumableTotalSize"), -1);
String resumableIdentifier = request String resumableIdentifier = request
.getParameter("resumableIdentifier"); .getParameter("resumableIdentifier");
String resumableFilename = request.getParameter("resumableFilename"); String fileName = new String(request.getParameter("resumableFilename").getBytes("iso-8859-1"),
"UTF-8");// 为了解决中文名称乱码问题
String resumableFilename = fileName /*request.getParameter("resumableFilename")*/;
String resumableRelativePath = request String resumableRelativePath = request
.getParameter("resumableRelativePath"); .getParameter("resumableRelativePath");
// Here we add a ".temp" to every upload file to indicate NON-FINISHED // Here we add a ".temp" to every upload file to indicate NON-FINISHED
@ -204,14 +215,89 @@ public class ExcelController extends BaseController{
} }
@ResponseBody @ResponseBody
@RequestMapping("/importExcel") @RequestMapping(produces = "application/json", value = "/importExcel", method = RequestMethod.POST)
public ModelMap importExcel(String... paths) throws Exception { public ModelMap importExcel(HttpServletRequest request,
HttpServletResponse response, @RequestBody String fileNameList) throws Exception {
log.info("---importExcel---" + fileNameList);
JSONArray jsonArray = JSONArray.fromObject(fileNameList);
List<String> jsonlist = (List<String>) JSONArray.toCollection(jsonArray, String.class);
ModelMap modelMap = new ModelMap(); ModelMap modelMap = new ModelMap();
if (null == jsonlist && jsonlist.size() > 0) {
System.err.println(request.getParameter("fileNameList"));
modelMap.addAttribute("returncode","3002");
return modelMap;
}
log.info(jsonlist.size());
List<String> listPath = new ArrayList<String>(); List<String> listPath = new ArrayList<String>();
listPath.addAll(Arrays.asList(paths)); for (String p : jsonlist) {
Map<String, String> result = preDataInfoService.importExcel(listPath); listPath.add(Configs.FILE_UPLOAD_PATH + p);
}
modelMap.addAttribute("data", "success"+result); Map<String, List> result = new HashMap<String, List>();
if (listPath.size() > 0) {
result = preDataInfoService.importExcel(listPath);
if (result.containsKey("fileUnExist") || result.containsKey("areaUnImport")) {
modelMap.addAttribute("data", result);
modelMap.addAttribute("returncode","3001");
}
else {
List<PreDataInfo> datalist = preDataInfoService.findAll();
modelMap.addAttribute("data", datalist);
modelMap.addAttribute("length", datalist.size());
modelMap.addAttribute("returncode","1001");
}
//删除文件
for (String filePath : listPath) {
//读取完后删除源文件(不管是否成功导入)
File tmpf = new File(filePath + ".temp");
File f = new File(filePath);
if (tmpf.exists()) {
tmpf.delete();
}
if (f.exists()) {
f.delete();
}
}
}
return modelMap; return modelMap;
} }
public void uploadSpring(HttpServletRequest request, HttpServletResponse respone){
System.out.println(request.getAttribute("file"));
System.out.println(request.getParameter("file"));
//解析器解析request的上下文
CommonsMultipartResolver multipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext());
//先判断request中是否包涵multipart类型的数据
if(multipartResolver.isMultipart(request)){
//再将request中的数据转化成multipart类型的数据
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator iter = multiRequest.getFileNames();
while(iter.hasNext()){
//这里的name为fileItem的alias属性值相当于form表单中name
String name=(String)iter.next();
System.out.println("name:"+name);
//根据name值拿取文件
MultipartFile file = multiRequest.getFile(name);
if(file != null){
String fileName = file.getOriginalFilename();
String path = "D:/test/" + fileName;
File localFile = new File(path);
if(!localFile.getParentFile().exists()) {
//如果目标文件所在的目录不存在,则创建父目录
localFile.getParentFile().mkdirs();
System.out.println("parent:"+localFile.getParentFile().getPath());
}
//写文件到本地
try {
file.transferTo(localFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
} }

Loading…
Cancel
Save