Servlet3.0实现单文件上传

Servlet3.0实现单文件上传

在servlet3.0中HttpServletRequest增加了对文件上传的支持

Part getPart(String name);根据名称来获取文件的上传域。

每个Part对象对应于一个文件上传域,可以通过Part对象方法来获取上传文件的文件类型和大小等属性,和write()方法将上传文件写入服务器磁盘.

上传文件页面 upload.jsp

<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<title>文件上传</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data" >
		文件名:<input type="text"  name="name" /><br/> 
		文件选择<input type="file"  id="file"  name="file" /><br/>
		<input type="submit"  value="上传" />
</form>

</body>
</html>

该上传页面设置enctype="multipart/form-data",表明该表单可以用于上传文件

处理文件上传的Servlet UploadServlet.java

package uploadFile;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;

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 implementation class UploadServelt
 */
@WebServlet(name = "upload", urlPatterns = { "/upload" })

@MultipartConfig
/*
 * 表示该 Servlet 希望处理的请求的 MIME 类型是 multipart/form-data;也就是文件类型
 */
public class UploadServelt extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public UploadServelt() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html,charset=GBK");
		PrintWriter out = response.getWriter();
		request.setCharacterEncoding("GBK");
		String name = request.getParameter("name");
		out.println("FileName: " + name + "</br>");
		Part part = request.getPart("file");// 获取文件上传域
		out.println("FileType :" + part.getContentType() + "</br>");
		Collection<String> headerNames = part.getHeaderNames();
		for (String headerName : headerNames) {
			out.println(headerName + "-->" + part.getHeader(headerName) + "<br/>");

		}
		String fileNameInfo = part.getHeader("content-disposition");
		String fileName = fileNameInfo.substring(fileNameInfo.indexOf("filename=\"") + 10, fileNameInfo.length() - 1);
		// 将上传的文件写入服务器
		part.write(getServletContext().getRealPath("/uploadFile") + "/" + fileName);
	}

}


记得在web应用的根目录下新建uploadFile文件夹

运行结果:



点击上传后

然后查看web应用下的uploadFile可以发现刚才上传的图片已经保存在该文件夹

    

这种方法更加简单的进行java web的开发

    

猜你喜欢

转载自blog.csdn.net/homewin19/article/details/79558969