Servlet3.0 提供了专门的文件上传 API。 HttpServletRequest 的 getPart()方法可以完成单个文件上传,而 getParts()方法可以完成多个文件上传。注意,这两个方法是从 Servlet3.0 开始定义的。 getPart 方法:Part getPart(String name) throws IOException, ServletException 作用:获取 Multipart 请求中指定名称的”部分”。一般这里的参数是上传表单中的”file”表单项的 name 值。 getParts 方法:java.util.Collection getParts()throws IOException, ServletException 作用:获取 Multipart 请求中的所有”部分”。多文件上传时使用该方法。
Servlet3.0在javax.servlet.http包中新增了Part接口,该接口中常用的方法有: write 方法:void write(String fileName) throws IOException 作用:将上传文件数据写入到指定的文件中。
另外在Servlet3.1中的Part接口里面新增了getSubmittedFileName方法用来获取上传的文件名
代码示例:
创建servlet时,需要在Servlet中添加一个@MultipartConfig注解,表示当前 Servlet 可以处理 Multipart 请求。
package com.monkey1024.servlet;
import java.io.File;
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;
/**
* 处理上传的servlet
*/
@WebServlet("/upload")
@MultipartConfig //表示当前servlet可以处理multipart请求
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取服务器存放上传文件的路径
String path = this.getServletContext().getRealPath("/upload");
System.out.println(path);
//获取上传文件,photo是html表单中的name
Part part = request.getPart("photo");
//获取上传文件的名称,这是servlet3.1中加入的方法
String fileName = part.getSubmittedFileName();
//将上传的文件写入到指定的服务器路径中
part.write(path + "/" + fileName);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
创建一个html文件
<form enctype="multipart/form-data" action="/upload" method="post" >
<input type="file" name="photo"/><br/>
<input type="submit" value="上传"/><br/>
</form>
海报
0 条评论
170
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~