关于文件上传以及导入excel文档 注意:
1、后台用的是ssm框架maven管理项目
pom.xml文件需要引两个jar包
<commons-fileupload.version>1.3.1</commons-fileupload.version> <commons-io.version>2.2</commons-io.version> <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>${commons-io.version}</version> </dependency> |
后台Controller层这样接收数据(file是接收文件,request接收参数数据,token接收header区域的值
)
@RequestMapping(value = "路径",method = RequestMethod.POST) @ResponseBody public Wrapper<?> importPurchaseRequestInfo (MultipartFile file, HttpServletRequest request,UserTokenInfoForLoginDto token){} |
其他关于框架的配置
spring-mvc.xml配置
<!-- 定义文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设定默认编码 --> <property name="defaultEncoding" value="UTF-8" /> <!-- 设定文件上传的最大值5MB,5*1024*1024 --> <property name="maxUploadSize" value="5242880" /> <property name="maxInMemorySize" value="4096" /> </bean> |
2、前台是纯js,因为前台是异步提交form表单,而非直接在form表单通过submit按钮提交,所以需要在js里面实例化一个form对象
var formData = new FormData(document.getElementById(这里是form表单id没有#号)); |
如果需要在form表单里面拼接其他数据可以通过
formData.append("参数名",参数值); |
这样的方式拼接参数,最后通过ajax提交:
$.ajax({ url: "请求路径", type: "POST", data: formData, processData: false, contentType: false, headers: { "token": token }, success: function(result){} }) |
注:HTML页面 form表单中的enctype=”multipart/form-data“必不可少
这里注意的是前台的声明实例化FormData的时候
3、这样文件上传后可以读取到文件,既可以上传文件也可以读取excel 实现 excel数据导入