Servlet文件上传_hanCSDN_20121215

Servlet实现上传文件

用到的jar包:commons-fileupload-1.2.2.jar和commons-io-2.4.jar两个包。

前台index.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>Servlet实现上传文件</title>
</head>
<body>
	<form action="uploadservlet" method="post" enctype="MULTIPART/FORM-DATA" >
		<input type="file"  name="file1" size="30"/>
		<input type="submit" name="sc" value="上传">
	</form>
</body>
</html>

 

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>upload</display-name>
  
    
  <!-- 上传 -->
  <servlet>
  <servlet-name>UpLoadServlet</servlet-name>
  <servlet-class>com.servlet.UpLoadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>UpLoadServlet</servlet-name>
  <url-pattern>/uploadservlet</url-pattern>
  </servlet-mapping>
  
    <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

后台UpLoadServlet.java

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UpLoadServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// 1.
		fileUpload(req);
		// 2.
		// 3.

	}

	// 上传文件
	private void fileUpload(HttpServletRequest req) {
		try {
			DiskFileItemFactory diskFactory = new DiskFileItemFactory();
			// threshold 极限、临界值,即硬盘缓存 1M
			diskFactory.setSizeThreshold(4 * 1024);
			// repository 贮藏室,即临时文件目录
			File tempFolder = new File(this.getServletContext()
					.getRealPath("/") + "/tempfolder");
			// 如果临时文件目录不存在,就创建一个临时文件目录
			if (!tempFolder.exists() && !tempFolder.isDirectory()) {
				tempFolder.mkdir();
			}
			diskFactory.setRepository(tempFolder);
			ServletFileUpload upload = new ServletFileUpload(diskFactory);
			// 设置允许上传的最大文件大小 4M
			upload.setSizeMax(4 * 1024 * 1024);
			// 解析HTTP请求消息头
			List fileItems = upload.parseRequest(req);
			Iterator iter = fileItems.iterator();
			while (iter.hasNext()) {
				FileItem item = (FileItem) iter.next();
				if (!item.isFormField()) {
					// 处理上传的文件
					String ksxxfilepath = processUploadFile(item);
					System.out.println(ksxxfilepath);
				} else {
					// 处理表单内容
					processFormField(item);
				}
			}
		} catch (Exception e) {
			// 使用 fileupload 包时发生异常
			e.printStackTrace();
		}
	}


	// 处理表单内容
	private void processFormField(FileItem item) throws Exception {
		String name = item.getFieldName();
		String value = item.getString();
		System.out.println(name+value);
	}

	// 处理上传的文件
	private String processUploadFile(FileItem item) throws Exception {
		// 此时的文件名包含了完整的路径,得注意加工一下
		String filename = item.getName();
		int index = filename.lastIndexOf("\\");
		//截取到文件名
		filename = filename.substring(index + 1, filename.length());
		long fileSize = item.getSize();
		if ("".equals(filename) && fileSize == 0) {
			return "";
		}
		File tempfiles = new File(this.getServletContext().getRealPath("/")
				+ "/tempfiles");
		if (!tempfiles.exists() && !tempfiles.isDirectory()) {
			tempfiles.createNewFile();
		}

		File uploadFile = new File(this.getServletContext().getRealPath("/")
				+ "/tempfiles" + "/" + filename);
		item.write(uploadFile);
		// 文件保存完毕
		return uploadFile.getPath();
	}
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值