javaWeb上传文件保存至服务器

前台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();
	}
发布了6 篇原创文章 · 获赞 0 · 访问量 53
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览