enctype=“multipart/form-data”,Servlet获取参数
2017-03-21 18:46
465 查看
HTML表单enctype属性是设置表单传输的MIME编码,共有三个值可选:
①application/x-www-form-urlencoded (默认值,不能用于文件上传)
②multipart/form-data (指定传输数据为二进制类型,比如图片、mp3、文件)
③text/plain (纯文本传输,发送邮件,接收时不会出现乱码)
UploadDemo.jsp
ServletUploadDemo.java
package com.text;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
//Servlet3.0+可以不用web.xml文件,改用注解方式映射。
//文件上传已经是Servlet3.0+必有的。
//Part:接口。代表表单中的每一项。相当于FileItem
@WebServlet("/servlet/ServletUploadDemo")
@MultipartConfig//**加上这个注解,反射该Servlet时才知道处理的是文件上传
public class ServletUploadDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//普通参数还可以照常取出(@MultipartConfig不能忘)
String name = request.getParameter("name");
String age = request.getParameter("age");
//特殊参数用part取
Part part = request.getPart("file");
// System.out.println(name+"--"+age);
// System.out.println(part);
//获取文件名
String contentDisposition = part.getHeader("Content-Disposition");
System.out.println(contentDisposition);// form-data; name="file"; filename="User.sql"
int filenameIndex = contentDisposition.indexOf("filename=");
String filename = contentDisposition.substring(filenameIndex+10, contentDisposition.length()-1);
part.write(getServletContext().getRealPath("/files")+"/"+filename);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
①application/x-www-form-urlencoded (默认值,不能用于文件上传)
②multipart/form-data (指定传输数据为二进制类型,比如图片、mp3、文件)
③text/plain (纯文本传输,发送邮件,接收时不会出现乱码)
UploadDemo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>文件上传</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> </head> <body> <form action="${pageContext.request.contextPath}/servlet/ServletUploadDemo" method="post" enctype="multipart/form-data"> name:<input type="text" name="name"/><br/> age:<input type="text" name="age"><br/> file:<input type="file" name="file"/><br/> <input type="submit" value="上传"/> </form> </body> </html>
ServletUploadDemo.java
package com.text;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
//Servlet3.0+可以不用web.xml文件,改用注解方式映射。
//文件上传已经是Servlet3.0+必有的。
//Part:接口。代表表单中的每一项。相当于FileItem
@WebServlet("/servlet/ServletUploadDemo")
@MultipartConfig//**加上这个注解,反射该Servlet时才知道处理的是文件上传
public class ServletUploadDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//普通参数还可以照常取出(@MultipartConfig不能忘)
String name = request.getParameter("name");
String age = request.getParameter("age");
//特殊参数用part取
Part part = request.getPart("file");
// System.out.println(name+"--"+age);
// System.out.println(part);
//获取文件名
String contentDisposition = part.getHeader("Content-Disposition");
System.out.println(contentDisposition);// form-data; name="file"; filename="User.sql"
int filenameIndex = contentDisposition.indexOf("filename=");
String filename = contentDisposition.substring(filenameIndex+10, contentDisposition.length()-1);
part.write(getServletContext().getRealPath("/files")+"/"+filename);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
相关文章推荐
- enctype=“multipart/form-data”,Servlet获取参数 原创 2017年03月21日 18:46:44 标签:enctype /servlet文件上传 2094 HTML表
- enctype="multipart/form-data" 文件上传,获取form 表单参数的问题
- enctype="multipart/form-data"的表单无法获取表单中除了type=file以外的其他参数 commons-fileupload 获取除file外其他参数
- enctype="multipart/form-data"的表单无法获取表单中除了type=file以外的其他参数 commons-fileupload 获取除file外其他参数
- enctype="multipart/form-data"中Form参数的获取
- form表单中加上enctype="multipart/form-data" 在servlet中get parameter(参数)返回空
- 当FORM的ENCTYPE=&quot;multipart/form-data&quot; 时request.getParameter()获取不到
- 当提交带文件的的form(enctype="multipart/form-data")时,不能获得参数的解决办法
- form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法 ?
- web过滤器中获取请求的参数(content-type:multipart/form-data)
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- web过滤器中获取请求的参数(content-type:multipart/form-data)
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- asp中enctype="multipart/form-data"获取Form表单的值
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- spring mvc当表单请求为application/json或enctype="multipart/form-data 过滤请求值参数,取不到请求参数问题