Servlet 知识点(三) -- Servlet 的文件上传功能的表单获取问题(2)
2017-06-28 09:35
281 查看
上周用 smartUpload 因为性能的关系被无情抛弃了 , 百度了一波之后采用了 common-io 和 common-lang 的上传方式 . 对于表单传值 , 他们也有很好的解决办法
common-io: http://download.csdn.net/detail/jacxuan/9882524
jsp
common-io: http://download.csdn.net/detail/jacxuan/9882524
//判断表单是否二进制流提交数据 boolean isMultipart = ServletFileUpload.isMultipartContent(request); if(!isMultipart){ throw new RuntimeException("请检查您的表单的enctype属性,确定是multipart/*"); } DiskFileItemFactory dfif = new DiskFileItemFactory(); ServletFileUpload parser = new ServletFileUpload(dfif); parser.setFileSizeMax(3*1024*1024);//设置单个文件上传的大小 parser.setSizeMax(6*1024*1024);//多文件上传时总大小限制 //文件根目录 String uploadPath = fileRoot + File.separator; //保存表单数据,以便在之后取出 Map<String,String> map = new HashMap<String, String>(); try { List<?> items = parser.parseRequest(request); Iterator iter = items.iterator(); if (items != null && items.size() > 0) { // 迭代表单数据 while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { //如果是普通表单字段 String name = item.getFieldName(); //获得表单name字段名称 String value = item.getString(); //获得表单name字段名称对应的值 map.put(name, value); log.info("name={},value={}",name,value); } else if (!item.isFormField()&&item.getName()!=null) { String fileName = new File(item.getName()).getName(); if(fileName == null || "".equals(fileName)){ continue; } String filePath = uploadPath + fileName; map.put("filePath",filePath); File storeFile = new File(filePath); // 在控制台输出文件的上传路径 System.out.println(filePath); // 如果文件不存在则保存到指定文件夹否则直接返回 if(!storeFile.exists()) item.write(storeFile); request.setAttribute("message", "文件上传成功!"); continue; } } } } catch (Exception e) { request.setAttribute("message","错误信息: " + e.getMessage()); }
jsp
<form action="http://f6fc9999.ngrok.io/souvx/sendMsgServlet" method="post" enctype="multipart/form-data"> <div id="sendOptionDiv" class="sendOptionDiv"> <select name="sendOption" id="sendOption"> <option selected="selected">===群发方式===</option> <option value="1">发送至所有人</option> <option value="2">发送至指定人群</option> </select> </div> <div id="openDiv"> <select name="cOpenid" id="cOpenid" multiple="multiple" size="4"> </select> </div> <div id="chooseStyleDiv"> <select name="chooseStyle" id="chooseStyle"> <option selected="selected">===群发类型===</option> <option value="1">发送文本消息</option> <option value="2">发送媒体消息</option> <option value="3">发送图文消息</option> </select> </div> <div id="contentId"> <input type="text" value="" name="content" id="content" /> </div> <div id="mediaId"> <input type="file" name="mytext" id="mytext" /> </div> <div id="newsDiv"> <ul> <li>作者:<input type="text" value="" name="author" id="author" /></li> <li>标题:<input type="text" value="" name="title" id="title" /></li> <li>链接:<input type="text" value="" name="content_source_url" id="content_source_url" /></li> <li>内容描述<input type="text" value="" name="digest" id="digest" /> </li> <li>是否在重复时发送:<input type="text" value="" name="show_cover_pic" id="show_cover_pic" /></li> </ul> </div> <input type="submit" value="提交" /> </form>
相关文章推荐
- HTML表单上传文件时遇到PHP无法获取文件的问题
- Servlet 知识点(三) -- Servlet 的文件上传功能导致后台取值失败
- Servlet 通过表单上传文件和获取表单数据的最简单方式
- enctype="multipart/form-data" 文件上传,获取form 表单参数的问题
- kindeditor上传文件在SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题 .
- 在tp3.2.3中使用 FormData 对象实现表单的文件上传功能遇到的一个问题及解决方法
- 在JSP表单提交中怎样在Servlet中处理文件上传并且获取JSP页面传过来的一些参数
- servlet文件上传2——复合表单提交(数据获取和文件上传)
- jfinal上传带有文件的form表单获取不到model的问题
- Servlet获取form表单上传文件及其他参数
- 用Struts2更好的实现文件的上传、下载功能以及解决中文名称问题
- 话题:jQuery 关于文件上传表单处理的一个非常怪异的问题
- 简单解决 multipart/form-data 文件上传表单中 传递参数无法获取的办法! (解决办法:动态更改表单提交URL)
- 在Servlet中使用开源fileupload包实现文件上传功能 推荐
- IE8上传文件时获取文件本地路径问题(C:\fakepath\……)的解决办法
- 利用iframe上传文件获取返回值的跨域问题
- CKEditor使用及开启文件上传功能(Servlet实现)
- FTP文件上传下载,获取文件列表功能
- 表单上传文件时,不能获取表单中字段解决方法
- 获取文件上传页面中文数据时乱码问题的解决办法