Common-FileUpload的使用

Common-FileUpload的使用

1.表单的属性设置

`<form enctype="multipart/from-data"></form>`

​ 注意:上传文件时,form标签的method属性取值必须为“post”

2.在项目重添加所需的jar包

commons-fileupload.***.jar

commons-io.***.jar

3.commons-FileUpload 组件的API

1.ServletFileUpload类 用于实现文件的上传操作

   ##### 2.FileItem 接口:用于封装单个表单字段元素的数据。

  ##### 3.FileItemFactory接口:

   ##### 4.DiskFileItemFactory类:FileItemFactory接口的实现类。

示例

<%
	//设置字符集编码
	request.setCharacterEncoding("utf-8");
	String uploadFileName = ""; //上传的文件名
	String fieldNmae = ""; //表单字段元素的name属性值
	//判断请求信息中的内容是否multipart类型
	boolean isMulitpar = ServletFileUpload.isMultipartContent(request);
	//上传文件的存储路径(服务器文件系统上的绝对文件路径)
	String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/");
	//String uploadFilePath = request.getRealPath("upload/");   // 
	//创建临时文件目录路径
	File tempPatchFile = new File("D:/temp/buffer");
	if(!tempPatchFile.exists()){
		tempPatchFile.mkdirs();
	}
	//判断
	if (isMulitpar) {
		//实例化对象
		//FileItemFactory factory = new DiskFileItemFactory();
		//创建 磁盘文件项工厂 对象
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//设置缓冲区大小
		factory.setSizeThreshold(4096);
		//设置上传文件用到临时文件存放路径
		factory.setRepository(tempPatchFile);
		/* 文件上传对象 */
		ServletFileUpload fileUpload = new ServletFileUpload(factory);
		//设置完整请求的最大允许大小
		fileUpload.setSizeMax(1024 * 30);
		try{
			//解析form表单中的所有文件
			List<FileItem> items = fileUpload.parseRequest(request);
			//获取迭代器
			Iterator<FileItem> itera = items.iterator();
			//遍历所有文件项
			while (itera.hasNext()) {
				//依次处理每个文件
				FileItem item = itera.next();
				if (item.isFormField()) { //普通表单字段
					fieldNmae = item.getFieldName(); //表单字段的name属性值
					if (fieldNmae.equals("username")) {
						out.print(item.getString("utf-8") + "上传了文件。<br>");
					}
				} else { //文件表单字段
					
					String fileName = item.getName();	//获取文件上传字段中的文件名
					/* 控制文件上传的类型 */
					//1.通过arrays类的aslist方法创建固定长度的集合
					List<String> fileType = Arrays.asList("gif","jpg","png"); 
					//截取文件类型
					String ext = fileName.substring(fileName.lastIndexOf(".") + 1);
					if(!fileType.contains(ext)){ //判断文件类型是否在允许的范围内
						out.print("文件上传失败,只能是gif,jpg,png");
					}else{
						if (fileName != null && !fileName.equals("")) {
							//创建文件对象
							File fullFile = new File(item.getName());
							File saveFile = new File(uploadFilePath, fullFile.getName());
							//写入文件
							item.write(saveFile);
							//上传文件名
							uploadFileName = fullFile.getName();
							out.print("上传成功后的文件名是:" + uploadFileName+",文件大小是:"+item.getSize()+"bytes!");
						}
					}
				}
			}
		}catch(FileUploadBase.SizeLimitExceededException ex){
			out.print("上传失败,文件太大,全部文件的最大限制是:"+fileUpload.getSizeMax() +"tytes!");
	}catch(Exception e){
			e.printStackTrace();
		}
	}
%>
posted @ 2021-04-18 18:29  M满  阅读(826)  评论(0)    收藏  举报