-
使用fileupload
浏览器端要求:
post请求
input type="file"
表单的 enctype="multipart/form-data"
服务器要求(fileUpload)
通过reuqest.getParameterxxx()获取的参数全部为空
使用步骤:
导入jar包
创建一个磁盘文件项工厂
创建一个核心文件上传对象 ServletUpLoad
上传对象调用方法解析请求 获取一个List<FileItem>
测试页面
<%@ 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>testPage</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/TestServlet" method="post" enctype="multipart/form-data">
测试文本:
<input type="text" name="testStr" /><br/>
测试文件:
<input type="file" name="testFile" /><br/>
<input type="submit" value="submit" />
</form>
</body>
</html>
测试servlet
package com.store.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class TestServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* 测试fileupload
*/
//创建工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建核心上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
//解析页面请求
try {
List<FileItem> list = upload.parseRequest(request);
//遍历list列表
for (FileItem fi : list) {
//判断是否是文件上传组件
if(fi.isFormField()) {
//普通表单上传
//获得name属性
String fieldName = fi.getFieldName();
//获得的同时处理字符集
String string = fi.getString("utf-8");
//打印测试
System.out.println(fieldName + ":" + string);
}else {
//文件上传组件
//获得name属性
String fieldName = fi.getFieldName();
//获得文件名
String fileName = fi.getName();
//获得文件输入流
InputStream is = fi.getInputStream();
System.out.println("文件:"+fieldName+"::"+fileName+"::"+is);
//保存文件到指定位置
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
测试结果