1.首先我们在前端使用上传空间,使用的是jquery的uploadify需要引入js可以参照uploadify的操作。
需要引入的文件:
<script type="text/javascript" src="${pageContext.request.contextPath}/lib/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/Uploadify/jquery.uploadify.js"></script>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/js/Uploadify/uploadify.css" />
js中加载:
$("#uploadify").uploadify({
'auto': true,//选择文件后是否自动上传
'buttonText': 'excel添加',
'swf': '${pageContext.request.contextPath}/js/Uploadify/uploadify.swf',
'uploader': '${pageContext.request.contextPath}/TsResource/uploadExcel.koala',
'cancelImg': '${pageContext.request.contextPath}/js/Uploadify/uploadify-cancel.png',
'width': '95',
'height': '24',
'method':'post',
'multi': false,
'fileTypeDesc': '支持的格式:',
'fileTypeExts': '*.xls;*.xlsx;',
'progressData':'percentage',
//检测FLASH失败调用
'onFallback': function () {
alert("您未安装FLASH控件!请安装FLASH控件后再试。");
},
//上传到服务器,服务器返回相应信息到data里
'onUploadSuccess': function (file, data, response) {
dialog.close();
alert(data);
},
'onUploadStart': function (file) {
shouUploadInfo()
}
});
具体详细的操作控制参照uploadify的操作介绍和文档。
针对于SpringMVC 在servlet配置文件中加入该类:
<bean id="multipartResolver" name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size100MB -->
<property name="maxUploadSize">
<value>1048576</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
上传的大小为1M
由于Post提交时,一个包含文件上传的Form会以multipart/form-data请求发送给服务器,必须明确告诉DispatcherServlet如何处理MultipartRequest。
这样一旦某个Request是一个MultipartRequest,它就会首先被MultipartResolver处理,然后再转发相应的Controller。
@ResponseBody
@Transactional
@RequestMapping(value = "/uploadExcel", method = RequestMethod.POST)
public String UploadImg(HttpServletRequest request, HttpServletResponse response)
throws Exception {
//文件处理器
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//文件列表
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
//文件的保存路径
String ctxPath = "C:/upload";
String errorMessage;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
String ymd = sdf.format(new Date());
//创建文件夹
File file = new File(ctxPath);
if (!file.exists()) {
file.mkdirs();
}
String fileName = null;
String path = null;
String returnpath = null;
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile mf = entity.getValue();
// 上传文件名
fileName = mf.getOriginalFilename();
//根据时间加密
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String uuid = UUID.randomUUID().toString().replaceAll("\\-", "");// 返回一个随机UUID。
//获取文件格式
String suffix = fileName.indexOf(".") != -1
? fileName.substring(fileName.lastIndexOf("."), fileName.length()) : null;
// 构成新文件名。
String newFileName = uuid + (suffix != null ? suffix : "");
File uploadFile = new File(ctxPath + "/"+newFileName);
try {
//读取文件内容
FileCopyUtils.copy(mf.getBytes(), uploadFile);
path = "../../excel/" + newFileName;
returnpath = "upload/" + newFileName;
Workbook workbook = null;
//开始获取上传文件
System.out.println(suffix);
if(suffix.equals(".xls")){
workbook = new HSSFWorkbook(new FileInputStream(new File(ctxPath+"/"+newFileName)));
}else if(suffix.equals(".xlsx")){
/*workbook = new XSSFWorkbook(new FileInputStream(new File(ctxPath+"/"+newFileName)));*/
}else{
return "请核查您的Excel内容格式!";
}
Sheet sheet=null;
System.out.println(workbook.getNumberOfSheets());
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {//获取每个S heet表
sheet=workbook.getSheetAt(i);
System.out.println(sheet.getPhysicalNumberOfRows());
for (int j = 1; j < sheet.getPhysicalNumberOfRows(); j++) {//获取每行
Row row=sheet.getRow(j);
TsResourceDTO tsResourceDTO=new TsResourceDTO();
tsResourceDTO.setDocTypeId((int)row.getCell( 0).getNumericCellValue());
tsResourceDTO.setDocType(row.getCell( 1).getStringCellValue());
tsResourceDTO.setDispatchName(row.getCell( 2).getStringCellValue());
tsResourceDTO.setDispatcPperiods(row.getCell( 3).getStringCellValue());
tsResourceDTO.setAllPperiods(row.getCell( 4).getStringCellValue());
tsResourceDTO.setDispatcNumber(row.getCell( 5).getStringCellValue());
tsResourceDTO.setConsultMember(row.getCell( 6).getStringCellValue());
tsResourceDTO.setDispatcTime(row.getCell( 7).getDateCellValue());
tsResourceDTO.setExpertGroup(row.getCell( 8).getStringCellValue());
tsResourceDTO.setTaskGuide(row.getCell( 9).getStringCellValue());
tsResourceDTO.setGroupLeader(row.getCell( 10).getStringCellValue());
tsResourceDTO.setDeputyLeader(row.getCell( 11).getStringCellValue());
tsResourceDTO.setGroupMembers(row.getCell( 12).getStringCellValue());
tsResourceDTO.setCounselor(row.getCell( 13).getStringCellValue());
tsResourceDTO.setDocNumber((int)row.getCell( 14).getNumericCellValue());
tsResourceFacade.creatTsResource(tsResourceDTO);
}
}
} catch (Exception e) {
returnpath= "请核查您的Excel内容格式!";
e.printStackTrace();
}
}
return returnpath;
}
为整体过程,按需取程序。