jsp实现excel文件上传(jsp文件上传漏洞)

在项目中,经常用到的一个功能就是文件的上传和下载,不过大多数情况下都是通用的工具类,自己写的情况较少,这里写个通过Spring框架和ajaxFileUpload插件实现上传的小功能,做个练习和记录。首

在项目中,经常用到的一个功能就是文件的上传和下载,不过大多数情况下都是通用的工具类,自己写的情况较少,这里写个通过Spring框架和ajaxFileUpload插件实现上传的小功能,做个练习和记录。首先配置下SpringMVC的配置文件,配置支持文件上传

jsp实现excel文件上传(jsp文件上传漏洞)

<!– 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver 说明: p:defaultEncoding=\\”UTF-8\\”:这里设置默认的文件编码为UTF-8,必须与用户JSP的默认编码一致; p:maxUploadSize=\\”5000000\\”:指定文件上传大小,单位为字节; p:uploadTempDir=\\”fileUpload/temp\\”:文件上传临时目录,上传完成后,就会将临时文件删除;

–>

然后写个简单的JSP页面,为了方便绑定数据,引入Spring自带的Form表单标签,引入语句

Form表单实现一个简单的注册功能,虽然说美感不好,这里还是引用了下bootstrap做了个简单的排版。因为原版的file标签的格式无法调整,所有用了其他的小标签代替,然后用按钮去触发file标签

<base href=\\”\\”>

My JSP \\’index.jsp\\’ starting page

<!– –> <link rel=\\”stylesheet\\” href=\\”static/css/bootstrap.css\\”/> <script type=\\”text/javascript\\” src=\\”static/js/jquery.min.js\\”> <script type=\\”text/javascript\\” src=\\”static/js/ajaxfileupload.js\\”> <script type=\\”text/javascript\\” src=\\”static/js/bootstrap.js\\”> <script type=\\”text/javascript\\” src=\\”static/js/jquery.json-2.4.js\\” charset=\\”UTF-8\\”> var path = \\”${_path}\\”; $(function(){

/* 重置Form表单功能 */ $(\\”#clean\\”).click(function(){ document.getElementById(\\”user\\”).reset(); $(\\”#userName\\”).attr(\\”value\\”,\\”\\”); $(\\”#password\\”).attr(\\”value\\”,\\”\\”); $(\\”#name\\”).attr(\\”value\\”,\\”\\”); $(\\”#sex\\”).attr(\\”value\\”,\\”\\”); $(\\”#file\\”).attr(\\”value\\”,\\”\\”); });

/* begin 附件上功能 */ $(\\”#choose\\”).click(function(){ $(\\”#fileUpload\\”).click(); }); $(\\”#fileUpload\\”).change(function(){ $(\\”#file\\”).attr(\\”value\\”,$(\\”#fileUpload\\”).val()); $.ajaxFileUpload({ type: \\”POST\\”, url: path+\\”/fileUpload.do\\”, data:{fileName:$(\\”#fileUpload\\”).val()},//要传到后台的参数,没有可以不写 secureuri : false,//是否启用安全提交,默认为false fileElementId:\\’fileUpload\\’,//文件选择框的id属性 dataType: \\’json\\’,//服务器返回的格式 async : false, success: function(mes){ if(mes.message==\\”OK\\”){ alert(\\”附件上传成功\\”); } if(mes.message==\\”NG\\”){ alert(\\”附件上传失败\\”); } }, error: function (){ alert(\\”附件上传失败\\”); } }); }); /* end 附件上功能 */ });

注册页面
账号:
密码:
姓名:
性别:
附件:

后台页面控制器,因为用了SpringMVC的form表单,所以在渲染的时候模型中一定要有user这个对象,所以我们用控制器跳转页面

@RequestMapping(\\”/Login.do\\”) public String Login(@ModelAttribute(\\”user\\”) User user, Model model){ System.out.println(\\”进入\\”); user.setName(\\”小明\\”); user.setSex(\\”男\\”); user.setUserName(\\”叶良辰\\”); model.addAttribute(\\”user\\”, user);

return \\”index\\”;

}

这里为了显示SpringMVC form的自动绑定功能,我给user对象设置了值,在JSP页面,如果form:input标签由path属性和user里的属性一样,会自动设置值

附件的js代码在上面的JSP页面中已经写好了,下面是后台控制的controller,因为我们配置了multipartResolver,所以form表单是设置了enctype=”multipart/form-data,后台一样能直接取出文本值接受文本框内容的controller

@RequestMapping(\\”/register.do\\”) public String register(@ModelAttribute(\\”user\\”) User user, Model model){

model.addAttribute(\\”user\\”, user); System.out.println(user); return \\”index\\”;

}

附件上传的controller

@RequestMapping(\\”/fileUpload.do\\”) public @ResponseBody Message fileUpload(HttpServletRequest request,@RequestParam(\\”fileUpload\\”) MultipartFile file, @RequestParam(\\”fileName\\”) String fileName,@ModelAttribute(\\”user\\”) User user,Model model,Message mes){

//简单判断文件是否为空 if(!file.isEmpty()){

try { // 文件保存路径 String filePath = request.getSession().getServletContext().getRealPath(\\”/\\”) + \\”fileUpload/\\” + file.getOriginalFilename(); file.transferTo(new File(filePath)); mes.setMessage(\\”OK\\”); } catch (Exception e) { mes.setMessage(\\”NG\\”); e.printStackTrace(); } } user.setFile(fileName); System.out.println(fileName); model.addAttribute(\\”user\\”, user); System.out.println(user); return mes;

}

本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
投稿

北京快递现在能发货吗(2022现在什么快递能发到北京)

2022-6-28 21:26:58

投稿

jpg图片太大压缩方法(照片压缩怎么弄)

2022-6-28 21:27:03

搜索