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文件解析
相关文章
- dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放
- Vscode个性化设置:让一个小萌妹陪你敲代码
- 裁员真能拯救中国互联网?
- dotnet C# 获取当前设备可移动磁盘
- 淘宝iOS扫一扫架构升级 - 设计模式的应用
- dotnet OpenXML 聊聊文本段落对齐方式
- 应用层与内核的几种通信方式
- 深度报告:大模型驱动 AI 全面提速!黄金十年开启
- python from…import的导入注意
- 揭秘6G时代网络架构!六大设计理念,三体四层五面一文看懂
- 一位老工程师在Google工作的十年:宁愿把团队交给别人带
- 思科宣布全面退出俄罗斯市场!
- 基于TypeScript从0到1搭建一款爬虫工具
- LeCun预言AGI:大模型和强化学习都是斜道!我的「世界模型」才是新路
- Wreshark分析理解TCP三次握手
- 挑战一晚上从零入门lua语言,直接对标Python快速上手
- pycharm如何清除缓存
- 问题解决:一次进 “源码” 排错的经历,学到了
- 世界超大AI芯片打破单设备训练大模型记录 ,Cerebras要「杀死」GPU
- YOLOv6:又快又准的目标检测框架开源啦