前言
在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文件解析
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111241.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...