文件上传简单示例

【环境】win10、eclipse  Photon 4.8.0 (2018.06)、Tomcat9.0、JDK1.8

【项目】Dynamic Web Project (Dynamic Web module version:3.0)

【jar包】commons-fileupload-1.2.1.jar、commons-io-1.4.jar

【前台】index.html

	<form action="/WEB32_fileupload/fileUpload" method="post" enctype="multipart/form-data">
		<input type="file" name="filename"> <br>
		<input type="submit" value="上传">
	</form>

【后端】FileUploadServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub

		try {
			// 接收上传的文件
			// 1、创建磁盘文件项工厂
			DiskFileItemFactory factory = new DiskFileItemFactory();
			
			// 2、创建文件上传的核心类
			ServletFileUpload upload = new ServletFileUpload(factory);
			
			// 3、解析request,获得文件项集合
			List<FileItem> parseRequest = upload.parseRequest(request);
			
			// 4、遍历文件项集合
			for (FileItem item : parseRequest) {
				// 5、判断普通表单项和文件上传项
				boolean formField = item.isFormField(); // 是否是一个普通表单项
				
				if (formField) {
					// 普通表单项
					String fieldName = item.getFieldName();
					String fielValue = item.getString();
					System.out.println(fieldName + ":" + fielValue);
					
				} else {
					// 文件上传项
					// 获得名字
					String fileName = item.getName();
					
					// 获得上传文件的内容
					InputStream in = item.getInputStream();
					
					// 将in中的数据拷贝到服务器上
					String path = this.getServletContext().getRealPath("upload"); // WebContent下upload文件夹
					OutputStream out = new FileOutputStream(path + "/" + fileName);
					IOUtils.copy(in, out);
					
					// 关闭资源
					out.close();
					in.close();
				}
			}
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

【项目目录结构】

【说明】

1、此项目采用注解式开发,FileUploadServlet中添加注解@WebServlet("/fileUpload")

2、form表单上传文件前提:

(1)post提交方式

(2)文件上传项必须有name属性

(3)表单的enctype="multipart/form-data"

3、依赖jar包资源commons-fileupload-1.2.1.jar和commons-io-1.4.jar自行百度,此处暂不提供。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值