servlet web3.0文件上传

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" })
@MultipartConfig
public 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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间辜负了谁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值