1.FileUpload的初识
fileUpload是apache的commons组件提供的上传组件,它最主要的工作就是帮我们解析request.getInpustream()。可以参考在线API文档:http://tool.oschina.net/apidocs/apidoc?api=commons-fileupload
使用fileUpload组件首先需要引入两个jar包:
commons-fileUpload.jar
commons-io.jar

使用fileUpload固定步骤:
创建工厂类:DiskFileItemFactory factory=new DiskFileItemFactory();
创建解析器:ServletFileUpload upload=new ServletFileUpload(factory);
使用解析器解析request对象:Listlist=upload.parseRequest(request);
一个FileItem对象对应一个表单项。FileItem类有如下方法:
String getFieldName():获取表单项的name的属性值。
String getName():获取文件字段的文件名。如果是普通字段,则返回null
String getString():获取字段的内容。如果是普通字段,则是它的value值;如果是文件字段,则是文件内容。
String getContentType():获取上传的文件类型,例如text/plain、image。如果是普通字段,则返回null。
long getSize():获取字段内容的大小,单位是字节。
boolean isFormField():判断是否是普通表单字段,若是,返回true,否则返回false。
InputStream getInputStream():获得文件内容的输入流。如果是普通字段,则返回value值的输入流。
例子:
jsp页面:
Title
用户名:
年龄:
分数:
照片
${error}
servlet代码:
package com.bjsxt.servlet;
import com.bjsxt.entity.Student;
import com.bjsxt.service.StudentService;
import com.bjsxt.service.impl.StudentServiceImpl;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
public class AddServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.创建文件工厂
FileItemFactory factory=new DiskFileItemFactory();
//2.创建解析器
ServletFileUpload upload=new ServletFileUpload(factory);
//限制文件上传的大小
//限制所有的文件上传的大小
upload.setFileSizeMax(1024*5*16);
//限制单个文件上传的大小
upload.setSizeMax(1024*16);
//设置上传的中文格式
upload.setHeaderEncoding("utf-8");
//使用解析器
ListfileItems=null;
try {
fileItems=upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
//刚才设置的大小在这里运行的时候,如果超过就会抛出异常
request.setAttribute("error","文件大小不能超过16kb");
request.getRequestDispatcher("/add.jsp").forward(request,response);
return ;
}
//开始接受表单的所有数据(包括 文字和文件)
String name=null;
int age=0;
double score=0;
String fileName=null;
String uuidName=null;
String contentType=null;
for(int i=0;i
本文介绍了Apache Commons FileUpload组件在Java Web中用于文件上传的使用方法,详细讲解了如何创建FileItemFactory和ServletFileUpload,以及如何通过FileItem获取上传文件的相关信息如名称、类型、大小等。同时,还展示了限制文件上传大小和处理上传异常的示例代码。
490

被折叠的 条评论
为什么被折叠?



