前台from表单提交
<input name="reportTemplate" id="reportTemplate" type="file"style="width: 230px;height: 20px" multiple/>
function save() {
$('#itemchinesename').validatebox({required:true});
var formData = new FormData($("#mlsPurchaseInfoFM")[0]);
$.ajax({
url : '<%=basePath%>codeGeneration/saveReportTemplate.do?',
type : "post",
dataType : "json",
mimeType : "multipart/form-data",
data : formData,
contentType : false,
processData : false,
success : function(res) {
if (!res.flag) {
$.messager.alert('保存失败',res.msg, 'error');
}else{
$.messager.alert('提示','保存成功!', 'info');
cancel();
}
}
});
}
controller获取上传文件
@RequestMapping(value = "/saveReportTemplate")
@ResponseBody
public void saveReportTemplate(@RequestParam(value = "reportTemplate", required = true) MultipartFile[] reportTemplate) {
logger.info("报告模板保存,开始...");
try {
PageData pd = this.getMultiPageData();
String username = Jurisdiction.getUsername();
pd.put("USERNAME", username);
PageData userPd = userService.findByUsername(pd);
pd.put("currentname", userPd.getString("NAME"));
pd.put("reportTemplate", reportTemplate);
JSONObject outer = codeGenerationService.saveReportTemplate(pd);
// 回写结果
String jsonData = outer.toString();
toJSONClient(jsonData);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.toString());
}
logger.info("报告模板保存,结束...");
}
保存文件到服务器指定路径下
@Override
public JSONObject saveReportTemplate(PageData pd) throws Exception {
JSONObject outer = new JSONObject();
boolean flag = true;
String itemchinesename = pd.getString("itemchinesename");
String itemId = "";
String reportTemplate = "";
String sumitunit = pd.getString("sumitunit");
String currentname = pd.getString("currentname");
//查询itemenglishname && itemId
sql.setSql("select * from mls_autocode_item t where t.itemchinesename = ?");
sql.setString(1, itemchinesename);
DataStore vds = sql.executeQuery();
if(vds != null && vds.size() > 0) {
itemId = vds.getString(0, "itemid");
}
//校验文件格式
MultipartFile[] reportTemplateFile = (MultipartFile[]) pd.get("reportTemplate");
String[] reportTemplateName = reportTemplateFile[0].getOriginalFilename().split("\\.");
if(!"pdf".equals(reportTemplateName[reportTemplateName.length - 1].toLowerCase())) {
outer.put("flag", false);
outer.put("msg", "文件类型不是.pdf!");
return outer;
}
//上传文件
String uuid = PubTool.getUUID();
reportTemplate = uploadFile((MultipartFile[]) pd.get("reportTemplate"), 1, itemchinesename, uuid);//上传报告模板
//保存信息
sql.setSql(" insert into report_template_demo (reportid, itemid, source_agent, reporttemplatepath, createoper, createdate)"
+ " values (?, ?, ?, ?, ?, sysdate)");
sql.setString(1, uuid);
sql.setString(2, itemId);
sql.setString(3, sumitunit);
sql.setString(4, reportTemplate);
sql.setString(5, currentname);
sql.executeUpdate();
outer.put("flag", flag);
return outer;
}
/**
* 上传文件
* @param file
* @param flag(1、报告模板 2、ftl模板 3、xml模板)
* @throws IOException
* @throws IllegalStateException
*/
public String uploadFile(MultipartFile[] file, int flag, String suppliername, String id) throws IllegalStateException, IOException {
boolean isAdd = false;
for(MultipartFile f : file) {
if(!StringUtils.isEmpty(f.getOriginalFilename())) {
isAdd = true;
}
}
String filelocation = null;
if(flag == 1) {
filelocation = Tools.readTxtFile(Const.REPORTTEMPLATEFILE);//报告模板路径
}else if(flag == 2){
filelocation = Tools.readTxtFile(Const.REPORTFTLTEMPLATEFILE);//报告ftl模板路径
}else if(flag == 3) {
filelocation = Tools.readTxtFile(Const.REPORTXMLTEMPLATEFILE);//报告xml模板路径
}
String dirName = filelocation + id + File.separator;
File dir = new File(dirName);
if(isAdd) {
//删除目录下文件
PubTool.deleteDir(dir);
}
if(!dir.exists()) {
dir.mkdirs();
}
for(MultipartFile f : file) {
if(!StringUtils.isEmpty(f.getOriginalFilename())) {
File localFile = new File(dirName + f.getOriginalFilename());
f.transferTo(localFile);
}
}
return dirName + file[0].getOriginalFilename();
}