servlet web3.0文件上传

来源:互联网 发布:风景线打印软件注册 编辑:程序博客网 时间:2024/04/27 20:07

servlet web3.0文件上传

在web3.0以前,文件上传基本上市通过common-fileupload或者SmartUpload。上传比较麻烦,在Servlet 3.0 中不需要导入任何第三方jar包,并且提供了很方便进行文件上传的功能。

注:

1. html中 <input type="file">表示文件上传控件;

2. form的 enctype="multipart/form-data";

3.在Servlet类前加上 @MultipartConfig

4.servlet中用request.getPart()获得;

 

下面是一个文件上传的例子:

upload.jsp源码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>web3.0文件上传</title></head><body><div><form method="post" enctype="multipart/form-data" action="uploadServlet.do">名称:<input type="text" id="name" name="name" /> <br>上传:<input type="file" id="file" name="file" /> <br><input type="submit" value="提交" /></form></div></body></html>


UploadServlet.java源码:

package cn.ifly.servlet;import java.io.IOException;import java.io.PrintWriter;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;import cn.ifly.utils.UploadUtil;@WebServlet(name = "uploadServlet", urlPatterns = { "/uploadServlet.do" })@MultipartConfigpublic class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html; charset=utf-8");response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();String name = request.getParameter("name");Part part = request.getPart("file");out.println("文本框内容名称:" + name + "<br />");out.println("此文件的大小:" + part.getSize() + "<br />");out.println("此文件类型:" + part.getContentType() + "<br />");out.println("文件名称:" + UploadUtil.getFileName(part) + "<br />");part.write("D:\\1." + UploadUtil.getFileType(part));}}

UploadUtil.java(由于在Servlet 3.0中很难获取上传文件的类型,因此我写了UploadUtil工具类,可以方便获得上传文件的类型和上传文件的名称)


package cn.ifly.utils;import javax.servlet.http.Part;/** * 文件上传工具类,根据Part对象得到文件的类型和文件的名称 *  * @desc: web3.0_fileupload * @author: kpchen * @createTime: 2014年11月10日 下午9:48:10 * @history: * @version: v1.0 */public class UploadUtil {public static String getFileType(Part p) {String name = p.getHeader("content-disposition");String fileNameTmp = name.substring(name.indexOf("filename=") + 10);String type = fileNameTmp.substring(fileNameTmp.indexOf(".") + 1,fileNameTmp.indexOf("\""));return type;}public static String getFileName(Part p) {String name = p.getHeader("content-disposition");String fileNameTmp = name.substring(name.indexOf("filename=") + 10);String fileName = fileNameTmp.substring(0, fileNameTmp.indexOf("\""));return fileName;}}



0 0
原创粉丝点击