附件上传form request.getParameter无法获取参数值解决方法
来源:互联网 发布:怎样注销淘宝账户 编辑:程序博客网 时间:2024/05/16 02:13
当表单被设置为multipart/form-data类型时,表单中的值post到服务端都是流的格式,此时request.getParameter拿不到参数值,需要通过对流的解析来获取。该问题有两种方法解决。
方法一:借助apache的common-fileupload组件来取得,具体代码参考如下。
JSP代码:
<html> <body> <!-- encType 必不可少 --> <form action="upImgServlet" method="post" encType="multipart/form-data"> 描述: <input type="text" name="description"/><br/>选择图片: <input type="file" name="img"/> <input type="submit" value="提交"/> </form> </body></html>
FileUploadServlet代码:
public class FileUploadServlet extends HttpServlet { public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // org.apache.commons.fileupload.DiskFileUpload 是一个开源包里的。 DiskFileUpload du = new DiskFileUpload(); du.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB du.setSizeThreshold(4096);// 设置缓存区大小 ,4 kb; // up 为 /WebRoot 下的 一个目录 du.setRepositoryPath(request.getSession().getServletContext() .getRealPath("/up"));// 设置缓存目录 // 得到所有文件 try { List list = du.parseRequest(request); Iterator it = list.iterator(); while (it.hasNext()) { org.apache.commons.fileupload.FileItem fileItem = (FileItem) it .next(); // 是否为表单元素。如文本框 等等。 if (fileItem.isFormField()) { String name = fileItem.getFieldName(); //通过流 用来读取表单元素里的内容。 java.io.BufferedReader br = new BufferedReader( new InputStreamReader(fileItem.getInputStream())); //如果还有除文件域以外的其他表单元素 就用 if()进行名字一一匹配。此处就是request.getParameter的替换方法 if(name.equals("description")){ String contents = br.readLine(); System.out.println(contents); } } // 文件域 else { // 获得文件名,这个文件名包括路径: String fileName = fileItem.getName(); int index = fileName.lastIndexOf('.'); fileName = fileName.substring(index); fileName = this.getFileName() + fileName; //文件保存位置 fileItem.write(new File(request.getSession().getServletContext().getRealPath("/img")+ "/" + fileName)); System.out.println("上传成功"); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } PrintWriter out = response.getWriter(); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } public void init() throws ServletException { // Put your code here } // 以日期 获得一个文件名。(不重复); String getFileName() { java.util.Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int mon = cal.get(Calendar.MONTH); int day = cal.get(Calendar.DATE); int hour = cal.get(Calendar.HOUR); int min = cal.get(Calendar.MINUTE); int sec = cal.get(Calendar.SECOND); int mi = cal.get(Calendar.MILLISECOND); System.out.println("mon" + mon); System.out.println("day" + day); return "" + year + mon + day + hour + min + sec + mi; }}
方法二:这是一种更简单的方法,在jsp form提交时拦截submit方法,重置form的action属性将description作为url参数加入其中,这时该参数以get方式提交后台servlet就可以取的到了。
0 0
- 附件上传form request.getParameter无法获取参数值解决方法
- request.getParameter(“参数名”) 中文乱码解决方法
- request.getParameter(“参数名”) 中文乱码解决方法
- request.getParameter(“参数名”) 中文乱码解决方法
- request.getParameter(“参数名”) 中文乱码解决方法
- request.getParameter(“参数名”) 中文乱码解决方法
- request.getParameter(“参数名”) 中文乱码解决方法
- request.getParameter(“参数名”) 中文乱码解决方法
- $.ajax()post方式请求参数无法传递,request.getParameter()无法获取
- FORM的ENCTYPE="multipart/form-data" request.getParameter()获取不到值
- commons fileupload 文件上传乱码问题解决方案 + request.getParameter无法得到参数问题
- commons fileupload 文件上传乱码问题解决方案 + request.getParameter无法得到参数问题
- json传递中文乱码解决方法以及解决request.getParameter()获取参数为乱码的问题
- 后台获取ajax传参, request.getParameter(“参数名”) 中文乱码解决方法
- OS开发之AFNetworking-解决Servlet用request.getParameter("")无法获取到post参数的问题
- multipart/form-data表单提交后,使用request.getParameter来获得text的参数值
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- Java RandomAccessFile用法
- 求最大子序列的和
- 个人简历
- 初探jvm垃圾回收
- Docker学习总结(1)——Docker实战之入门以及Dockerfile(一)
- 附件上传form request.getParameter无法获取参数值解决方法
- EGOCache缓存框架详细讲解
- 毕设周记Ⅰ
- iOS多线程开发 -------- GCD
- ViewPager中呈现前一页和后一页的内容
- SqlServer触发器:同时删除多条数据,备份多条数据
- python常用的转义字符
- 管理后台-后端-Node.js篇
- return 和exit的区别