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

浙公网安备 33010602011771号