多个|单个文件上传

文件上传

  • Part接口代表上传的文件或表单数据
  • Part接口的常用方法
方法说明
String getName()获取控件的name属性
long getSize()获取上传文件的大小,单位是字节
InputStream getInputStream()获取输入流,用于检索文件的内容
void write(String fileName)将上传的文件写入磁盘
String getHearder(String name)获取指定part请求头信息
Collection getHearders(String name)获取指定名称所有请求头的信息
Collection getHearderNames()获取所有请求头的名称
String getContentType()获取文件MIME类型

单个文件上传

JSP页面

<form  action="fileup" enctype="multipart/form-data" method="post">
姓名:<input name="name" type="text"/><br/>
头像:<input name="file" type="file"> <br/>
<input type="submit" value="提交"/>

servlet

package cn.bdqn.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;


@WebServlet (name="fileup servlet",urlPatterns="/fileup")
@MultipartConfig
public class FileuploadServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Part part=req.getPart("file");	
		System.out.println("文件的名称:"+part.getSubmittedFileName());
		System.out.println("文件大小:"+part.getSize());
		System.out.println("文件的类型:"+part.getContentType());
		
		//将文件保存到上传路径         getServletContext 
		String uploadFile=getServletContext().getRealPath("upload");
		File file=new File(uploadFile);
		System.out.println(111);
		//如果目录不存在,就创建
		if (!file.exists()) {
			file.mkdir();
		}
		System.out.println("文件上传路径"+uploadFile);
		System.out.println(222);
		//上传                                       File.separator 文件分隔符 \\    真实需修改命名规则,以防重复覆盖
		part.write(uploadFile+File.separator+part.getSubmittedFileName());
	}

}

多个文件上传

JSP页面

<form  action="fileup" enctype="multipart/form-data" method="post">
姓名:<input name="name" type="text"/><br/>
头像:<input name="file" type="file"> <br/>
头像1:<input name="file1" type="file"> <br/>
<input type="submit" value="提交"/>

servlet

package cn.bdqn.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;


@WebServlet (name="fileup servlet",urlPatterns="/fileup")
@MultipartConfig
public class FileuploadServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//将文件保存到上传路径         getServletContext 
		String uploadFile=getServletContext().getRealPath("upload");
		File file=new File(uploadFile);
		System.out.println(111);
		//如果目录不存在,就创建
		if (!file.exists()) {
			file.mkdir();
		}
		System.out.println("文件上传路径"+uploadFile);
		
		
		Collection<Part> parts=req.getParts();
		for(Part part:parts) {
		//	part.getName() 获取前台
			if (part.getName().startsWith("file")) {
				System.out.println("文件的名称:"+part.getSubmittedFileName());
				System.out.println("文件大小:"+part.getSize());
				System.out.println("文件的类型:"+part.getContentType());
				//上传                                       File.separator 文件分隔符 \\    真实需修改命名规则,以防重复覆盖
				part.write(uploadFile+File.separator+part.getSubmittedFileName());
			}
		}

		
	}

}

限制单个文件上传类型

package cn.bdqn.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;


import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;


@WebServlet (name="fileup servlet",urlPatterns="/fileup")
@MultipartConfig
public class FileuploadServlet extends HttpServlet {
	//允许的文件上传类型
 private final String Allow_IMG_TYPE="image/png;image/jpeg";
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		//将文件保存到上传路径         getServletContext 
		String uploadFile=getServletContext().getRealPath("upload");
		File file=new File(uploadFile);
		//如果目录不存在,就创建
		if (!file.exists()) {
			file.mkdir();
		}
		System.out.println("文件上传路径"+uploadFile);
		
		Part part=req.getPart("file");
		//	part.getName() 获取前台
		if(Arrays.asList(Allow_IMG_TYPE.split(";")).contains(part.getContentType())) {
				System.out.println("文件的名称:"+part.getSubmittedFileName());
				System.out.println("文件大小:"+part.getSize());
				System.out.println("文件的类型:"+part.getContentType());
				//上传                     File.separator 文件分隔符 \\    真实需修改命名规则,以防重复覆盖
				part.write(uploadFile+File.separator+part.getSubmittedFileName());
			}else {
				resp.setContentType("text.html");
				resp.setCharacterEncoding("utf-8");
			resp.getWriter().print("不支持此文件类型的上传,只支持image/png和image/jpeg");	
	}

		
	}

}

文件上传大小限制

使用注解,只能报错阻难,需要try … catch

package cn.bdqn.servlet;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;


import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;


@WebServlet (name="fileup servlet",urlPatterns="/fileup")
@MultipartConfig
public class FileuploadServlet extends HttpServlet {
	//允许的文件上传类型
 private final String Allow_IMG_TYPE="image/png;image/jpeg";
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		//将文件保存到上传路径         getServletContext 
		String uploadFile=getServletContext().getRealPath("upload");
		File file=new File(uploadFile);
		//如果目录不存在,就创建
		if (!file.exists()) {
			file.mkdir();
		}
		System.out.println("文件上传路径"+uploadFile);
		//反射,获取注解信息
		Part part=req.getPart("file");
		//	part.getName() 获取前台
		//限制类型
		if(Arrays.asList(Allow_IMG_TYPE.split(";")).contains(part.getContentType())) {
			//限制大小
			if(part.getSize()> 1024*100*2) {
				resp.setContentType("text.html");
				resp.setCharacterEncoding("utf-8");
			resp.getWriter().print("文件大小炒熟200kb");	
			return;
			}
				System.out.println("文件的名称:"+part.getSubmittedFileName());
				System.out.println("文件大小:"+part.getSize());
				System.out.println("文件的类型:"+part.getContentType());
				//上传              File.separator 文件分隔符 \\    真实需修改命名规则,以防重复覆盖
				part.write(uploadFile+File.separator+part.getSubmittedFileName());
			}else {
				resp.setContentType("text.html");
				resp.setCharacterEncoding("utf-8");
			resp.getWriter().print("不支持此文件类型的上传,只支持image/png和image/jpeg");	
	}

		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值