web开发excel文件上传及解析(上)

前言

在web开发的时候,我们经常有遇到文件的上传以及解析的需求,比如我们将excel文件上传并且解析,最后将解析的excel的内容插入到数据库中,今天就实践一下文件的上传以及excel的解析,这篇博客主要是实践文件上传功能,对应的excel文件的解析,将在下一篇博客实践。

准备工作:

本文上传文件使用了apche下面的commons-fileupload.jar、commons-io.jar

如果是maven项目,则需要在pom.xml配置如下依赖

<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>${commons.fileupload.version}</version>
</dependency>

<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.2</version>
</dependency>

如果不是maven项目则下载jar包的,然后导入到项目中,下载地址如下:

链接:https://pan.baidu.com/s/12FHorV5ImIn4aiCqFcBUkg 密码:yxgj

功能实现:

用上述两个jar包实现上传的功能比较简单,这里就直接上传代码

前端代码:主要就是一个表单

<form name="frm_test" action="${pageContext.request.contextPath }/uploadExcelFile" method="post" enctype="multipart/form-data">
		用户名:<input type="text" name="userName">  <br/>
		文件:   <input type="file" name="file">   <br/>
        <input name="upload" type="submit" value="上传">
</form>

注意事项,一定要将enctype="multipart/form-data",另外就是<input type="file" name="file">

其他没什么注意的地方,记得接口不要写错了

后台代码:

@RequestMapping(value="/uploadExcelFile",method=RequestMethod.POST,produces = "text/html;charset=UTF-8")
	@ResponseBody
	public String uploadExcelFile(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request) {
		try {
			String path = request.getSession().getServletContext().getRealPath("/");
			String fileName = "display.xlsx";
			File excelFile = new File(path+fileName);
			LOGGER.info("uploadExcelFile file = "+excelFile.toString());
			if(excelFile.exists()) {
				excelFile.delete();
			}
			file.transferTo(excelFile);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "fail";
		}
		return "success";
	}

 这里有个小的地方需要注意@RequestParam("file")这个里面的file和前端的 <input type="file" name="file">中的name=“file”要一致。

这部分代码是简单的功能实现,并不是特别符合springmvc的设计,因为良好的mvc的设计controller层是不能写太多的逻辑,业务逻辑应当写道model层去的。另外返回的话也只是简单的返回success和fail。除了上面的代码,还需要在配置文件applicationContext.xml中配置一个关键的bean,不然上传的时候会报错。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
        p:maxUploadSize="5242880"
        p:maxInMemorySize="4096"
        p:defaultEncoding="UTF-8">

    </bean>

这里有个注意的地方就是bean的id必须设置为“multipartResolver”,不然同样会报错的。

好了,按照上面的操作,基本上是可以实现文件上传的功能,下面看运行的效果吧

前端展示:

我这边是上传到了tomcat中对应的该项目中,上传之后的该项目的根目录

这里仅仅是实战了一把文件上传的功能,接下来看看如何实现excel的文件解析,excel文件解析

猜你喜欢

转载自blog.csdn.net/hongtaolong/article/details/84175683