java-web 文件上传

  • 使用fileupload

    浏览器端要求:
        post请求
        input type="file"
        表单的 enctype="multipart/form-data"
    服务器要求(fileUpload)
        通过reuqest.getParameterxxx()获取的参数全部为空
        使用步骤:
            导入jar包
            创建一个磁盘文件项工厂
            创建一个核心文件上传对象 ServletUpLoad
            上传对象调用方法解析请求 获取一个List<FileItem>

需引用的jar包

测试页面

<%@ 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);
	}

}

测试结果

猜你喜欢

转载自blog.csdn.net/alexzt/article/details/81304397