2.5动态web项目,文件上传
1、前台页面
表单实现文件上传:
1)、表单的提交类型为method=“POST”
2)、表单类型设置为enctype=“multipart/form-data”
3)、表单元素设置name属性值
2、后台代码
首先需要导入第三方jar包: http://commons.apache.org/
下 载commons-io 和 commons-fileupload 两个 jar 的资源。解压并导入到项目中。
commons-fileupload.jar 是文件上传的核心包
commons-io.jar 是 filefupload 的依赖包,同时又是一个工具包。
实现步骤:
DiskFileItemFactory – 设置磁盘空间,保存临时文件。只是一个工具类
ServletFileUpload – 文件上传的核心类,此类接收request,并解析
ServletFileUpload.parseRequest(request); – List解析 request
1、创建一个DiskFileItemFactory工厂类,并定制临时文件和大小
2、创建ServletFileUpload核心类,接收临时文件,做请求的转换
3、通过ServletFileUpload类转换原始请求,的到FileItem集合
4、遍历集合中的各个元素处理
5、判断每个元素是否是普通表单项,如果是则按照普通表单项处理
6、如果不是普通表单项,则是文件,通过处理的方式进行处理(上传)
3.0动态web项目,文件上传
使用注解@MultipartConfig将一个Servlet标识为支持文件上传。
Servlet3.0将multipart/form-data的POST请求封装成Part,通过Part对上传的文件进行操作。
1、普通表单项取值
request.getParameter(name)
2、文件域
request.getPart(name)
注:如果前台表单是文件上传表单,一定要加上注解@MultipartConfig
// 接收参数
String uname = request.getParameter("uname");
System.out.println(uname);
// ============文件上传==========
// 得到part对象 getPart(name):name表示的是表单元素(文件域)的name属性值
Part part = request.getPart("myfile");
// 得到上传文件的名称
String fileName = part.getSubmittedFileName();
// 得到文件想要存放的路径
String path = request.getServletContext().getRealPath("/");
// 上传文件
part.write(path + fileName);