enctype=“multipart/form-data”,Servlet获取参数
原创 2017年03月21日 18:46:44 标签:enctype /servlet文件上传 2094
HTML表单enctype属性是设置表单传输的MIME编码,共有三个值可选:
①application/x-www-form-urlencoded (默认值,不能用于文件上传)
②multipart/form-data (指定传输数据为二进制类型,比如图片、mp3、文件)
③text/plain (纯文本传输,发送邮件,接收时不会出现乱码)
UploadDemo.jsp
[html] view plain copy
<%@ 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
[java] view plain copy
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表
最新推荐文章于 2023-03-10 11:36:13 发布