JavaWeb中实现文件上传

本文介绍了在JavaWeb中实现文件上传的三种方式:Servlet2.5、Servlet3.0和SpringMVC。讲解了每个方式的具体实现步骤,包括前台表单设置、后台代码处理及MIME类型的解释。对于Servlet2.5,重点阐述了使用commons-fileupload库进行文件上传的操作流程;Servlet3.0则通过@MultipartConfig注解简化处理;SpringMVC中借助MultipartFile接口实现上传。
摘要由CSDN通过智能技术生成

上回我们说了下文件下载的方式有哪些,这次我们从不同的环境下简单来说说文件上传的方式有哪些。

文件上传的方式

  • Servlet2.5 方式
  • Servlet3.0 方式
  • SpringMVC 方式

案例实操

Servlet2.5 方式

文件上传涉及到前台页面的编写和后台服务器端代码的编写,前台发送文件,后台接收并保存文件,这才是一个完整的文件上传。

1) 前台页面

在做文件上传的时候,会有一个上传文件的界面,首先我们需要一个表单,并且表单的请求方式为 POST;其次我们的 form 表单的 enctype 必须设为”multipart/form-data”即 enctype=“multipart/form-data” 意思是设置表单的 MIME 编码。默认情况下这个编码格式是 ”application/x-www-form-urlencoded”,不能用于文件上传;只有使用了 multipart/form-data 才能完整地传递文件数据。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
	<form action="uploadServlet" method="post" enctype="multipart/form-data">
		文件:<input type="file" name="myfile"/>
		<input type="submit" value="上传" />
	</form>
</body>
</html>

2) 后台 commons-fileupload 的使用

首先需要导入第三方jar包,http://commons.apache.org/ 下载 commons-io 和 commons-fileupload 两个jar的资源。解压并导入到项目中。commons-fileupload.jar 是文件上传的核心包 commons-io.jar 是 fileupload 的依赖包,同时又是一个工具包。

介绍一下使用到的几个核心类

  DiskFileItemFactory – 设置磁盘空间,保存临时文件。只是一个工具类

  ServletFileUpload – 文件上传的核心类,此类接收 request,并解析

  ServletFileUpload.parseRequest(request); – List 解析 request

  1、创建一个 DiskFileItemFactory 工厂类,并制定临时文件和大小

  2、创建 ServletFileUpload 核心类,接收临时文件,做请求的转换

  3、通过 ServletFileUpload 类转换原始请求,得到 FileItem 集合

  4、遍历集合中的各个元素并处理

  5、判断每个元素是否是普通表单项,如果是则按照普通表单项处理

  6、如果不是普通表单项,则是文件,通过处理的方式进行处理(上传)

public class UploadServlet extends HttpServlet {
   
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
		// 设定编码,可以获取中文文件名
		request.setCharacterEncoding("UTF-8");
		// 获取tomcat下的upload目录的路径
		String path = getServletContext().getRealPath("/upload");
		// 临时文件目录
		String tempPath = getServletContext().getRealPath("/temp");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值