Servlet文件上传

1、文件上传在html或jsp中必须要写明调用方法跟编码方式

method="post" enctype="multipart/form-data"

2、input 的type 是 type=“file”
在这里插入图片描述

Servlet 后台
3、pom 文件添加包

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3</version>
</dependency>

4、在Servlet的doPost()方法中

		 	DiskFileItemFactory factory = new DiskFileItemFactory(); 
		    //当内存中文件数据达到THRESHOLD_SIZE后,就写入临时文件中,避免上传大文件时,消化太多内存 
		    ServletFileUpload upload = new ServletFileUpload(factory); 
		    upload.setHeaderEncoding("UTF-8"); 
		    upload.setSizeMax(2*1024*1024); 
		    //上传以后,文件保存的地址
		    String savePath="C:/tmp/demo1/";
		    try {
		    	// 获取 from表单里面,所有的元素
				List items = upload.parseRequest(request);
				
				//form 循环 遍历表单里面的元素集合
				for(int i=0;i<items.size();i++){
					//每个表单元素,都封装到一个FileItem类型的对象中
					FileItem fitem=(FileItem) items.get(i);
					System.out.println("元素name属性的值是="+fitem.getFieldName());
					
					//  fitem.isFormField() 表示,如果当前这个元素的类型type不等于file,那么就返回true
					if(fitem.isFormField() ){
						System.out.println("这是一个普通的非文件字段");
						System.out.println("输入框,前端输入的值是---"+fitem.getString());
						
					}else{
						
						System.out.println("这是一个文件字段");
						System.out.println("fitem.getName() 原始的文件名字--"+fitem.getName());
						//File.separator 这是一个静态的变量。 
						// 在windows的操作系统返回值是 \\  如果是linux系统,返回是一个  /
						//存储上传的文件
						File file=new File(savePath+File.separator+fitem.getName());
						try {
							fitem.write(file);
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						
					}
				}
			} catch (FileUploadException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值