??????????????????? ???????????
???????????????
需求背景:
页面上传一个文件到controller层,然后后台对文件进行处理。文件类型不限。
第一种:单纯的上传文件
页面功能展现:
第一步:首先需要两个jar
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
版本不限:
pom文件中相应两个jar:
[html] view plain copy print?
- <dependency>
- <artifactId>commons-io</artifactId>
- </dependency>
- <dependency>
- <artifactId>commons-fileupload</artifactId>
- </dependency>
???<dependency> ???????<groupId>commons-io</groupId> ???????<artifactId>commons-io</artifactId> ???????<version>2.4</version> ???</dependency> ???<dependency> ???????<groupId>commons-fileupload</groupId> ???????<artifactId>commons-fileupload</artifactId> ???????<version>1.3</version> ???</dependency>
第二步:在spring-mvc.xml中配置
[html] view plain copy print?
- <!--文件上传配置-->
- >
- <propertyname="maxUploadSize"value="209715200"/>
- <propertyname="defaultEncoding"value="UTF-8"/>
- <propertyname="resolveLazily"value="true"/>
- ???<!-- 文件上传配置 --> ???<bean ????> ???<!-- 上传的最大限制 --> ???????<property name="maxUploadSize" value="209715200" /> ???????<!-- 默认编码 --> ???????<property name="defaultEncoding" value="UTF-8" /> ???????<!-- 上传文件的解析 --> ???????<property name="resolveLazily" value="true" /> ???</bean>
第三步:jsp页面代码
[html] view plain copy print?- <%@pagecontentType="text/html;charset=UTF-8"language="java"%>
- <!DOCTYPEHTML>
- <head>
- <title>数据生成</title>
- <body>
- <formmethod="post"action=""enctype="multipart/form-data">
- <inputtype="file"name="uploadFile"/>
- <inputtype="button"value="上传"/>
- </div>
- <scripttype="text/javascript"src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
- functionuploadFiles(){
- varuploadFile=newFormData($("#file")[0]);
- if("undefined"!=typeof(uploadFile)&&uploadFile!=null&&uploadFile!=""){
- url:‘/manage/fileupload/upload‘,
- data:uploadFile,
- cache:false,
- processData:false,//不处理数据
- console.log(data);
- },
- alert("上传失败!");
- })
- alert("选择的文件无效!请重新选择");
- }
- </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page isELIgnored="false" %><!DOCTYPE HTML><html><head> ???<meta charset="UTF-8" /> ???<title>数据生成</title></head><body> ???<div> ???????<form method="post" action="" enctype="multipart/form-data"> ???????<h3>选择一个文件:</h3> ???????<input type="file" name="uploadFile" /> ???????<br/><br/> ???????<input type="button" value="上传" /> ???????</form> ???</div></body><script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script><script>functionuploadFiles(){// ?var uploadFile = $(‘#excelFile‘).get(0).files[0]; ???varuploadFile=newFormData($("#file")[0]); ???console.log(uploadFile); ???if("undefined" != typeof(uploadFile) && uploadFile != null && uploadFile != ""){ ???????$.ajax({ ???????????url:‘/manage/fileupload/upload‘, ???????????type:‘POST‘, ???????????data:uploadFile, ???????????async:false, ???????????cache: false, ????????????contentType:false,//不设置内容类型 ???????????processData:false, //不处理数据 ???????????success:function(data){ ???????????????console.log(data); ???????????????alert(data.msg); ???????????}, ???????????error:function(){ ???????????????alert("上传失败!"); ???????????} ???????}) ???}else { ???????alert("选择的文件无效!请重新选择"); ???}}</script></html>
有关于FormData可参考此链接:[html] view plain copy print?- https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects
https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects
第四步:controller层代码
[java] view plain copy print?- packagecom.bigaoread.platform.web.manage.fileupload;
- importjava.util.HashMap;
- importorg.slf4j.LoggerFactory;
- importorg.springframework.stereotype.Controller;
- importorg.springframework.web.bind.annotation.RequestMethod;
- importorg.springframework.web.bind.annotation.ResponseBody;
- @RequestMapping("/manage/fileupload")
- privatestaticfinalLoggerlog=LoggerFactory.getLogger(FileUploadController.class);
- @Autowired
- publicStringuploadPage(){
- }
- @RequestMapping(value="/upload",method=RequestMethod.POST)
- publicMap<String,Object>uploadFile(HttpServletRequestrequest,
- Map<String,Object>resultMap=newHashMap<>();
- returnresultMap;
- package com.bigaoread.platform.web.manage.fileupload;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import com.bigaoread.platform.service.fileupload.FileUploadService;@Controller@RequestMapping("/manage/fileupload")public class FileUploadController { ???private static final Logger log = LoggerFactory.getLogger(FileUploadController.class); ???????@Autowired ???private FileUploadService fileUploadService; ???????@RequestMapping("/uploadPage") ???public String uploadPage() { ???????return "/manage/fileupload/uploadPage"; ???} ???????@RequestMapping(value="/upload", method=RequestMethod.POST) ???@ResponseBody ???public Map<String, Object> uploadFile(HttpServletRequest request, ???????????@RequestParam MultipartFile uploadFile){ ???????Map<String, ?Object> resultMap = new HashMap<>(); ???????resultMap = fileUploadService.uploadFile(uploadFile); ???????return resultMap; ???}}
第五步:debug测试
上传文件表结构原始.docx :
点击上传后,后台debug查看对象:
上传成功!
第二种,假如在前端还要传入其他参数时的做法
情景图(增加了一个下拉选):
这种多一个参数时,则需要修改两个地方就好了。
第一个是JSP:
如:
[html] view plain copy print?- <%@pagecontentType="text/html;charset=UTF-8"language="java"%>
- <%--<%@pagelanguage="java"contentType="text/html;charset=UTF-8"--%>
- <!DOCTYPEHTML>
- <head>
- <title>数据生成</title>
- <body>
- <formmethod="post"action=""enctype="multipart/form-data">
- <optionvalue="1">1</option>
- <optionvalue="3">3</option>
- <optionvalue="5">5</option>
- <h3>选择一个文件:</h3>
- <br/><br/>
- </form>
- </body>
- <script>
- varformData=newFormData();
- //varuploadFile=newFormData($("#file")[0]);
- formData.append("uploadFile",uploadFile);
- console.log(uploadFile);
- $.ajax({
- type:‘POST‘,
- async:false,
- contentType:false,//不设置内容类型
- success:function(data){
- alert(data.msg);
- error:function(){
- }
- }else{
- }
- </script>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page isELIgnored="false" %><%-- <%@ page language="java" contentType="text/html; charset=UTF-8" --%><%-- ????pageEncoding="UTF-8" import="java.util.*" isELIgnored="false"%> --%><!DOCTYPE HTML><html><head> ???<meta charset="UTF-8" /> ???<title>数据生成</title></head><body> ???<div> ???????<form method="post" action="" enctype="multipart/form-data"> ???????????<select > ???????????????<option value="1">1</option> ???????????????<option value="2">2</option> ???????????????<option value="3">3</option> ???????????????<option value="4">4</option> ???????????????<option value="5">5</option> ???????????</select> ???????<h3>选择一个文件:</h3> ???????<input type="file" name="uploadFile" /> ???????<br/><br/> ???????<input type="button" value="上传" /> ???????</form> ???</div></body><script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script><script>functionuploadFiles(){ ???var formData = new FormData(); ???var uploadFile = $(‘#excelFile‘).get(0).files[0]; ???// ?varuploadFile=newFormData($("#file")[0]); ???var selectedId = $(‘#select‘).val(); ???formData.append("uploadFile",uploadFile); ???formData.append("selectedId", selectedId); ???console.log(uploadFile); ???if("undefined" != typeof(uploadFile) && uploadFile != null && uploadFile != ""){ ???????$.ajax({ ???????????url:‘/manage/fileupload/upload‘, ???????????type:‘POST‘, ???????????data:formData, ???????????async:false, ???????????cache: false, ????????????contentType:false,//不设置内容类型 ???????????processData:false, //不处理数据 ???????????success:function(data){ ???????????????console.log(data); ???????????????alert(data.msg); ???????????}, ???????????error:function(){ ???????????????alert("上传失败!"); ???????????} ???????}) ???}else { ???????alert("选择的文件无效!请重新选择"); ???}}</script></html>
controller代码:
???????????????[java] view plain copy print?- packagecom.bigaoread.platform.web.manage.fileupload;
- importjava.io.IOException;
- importjava.util.Map;
- importorg.slf4j.Logger;
- importorg.springframework.beans.factory.annotation.Autowired;
- importorg.springframework.web.bind.annotation.RequestMapping;
- importorg.springframework.web.bind.annotation.RequestParam;
- importorg.springframework.web.multipart.MultipartFile;
- importcom.bigaoread.platform.service.fileupload.FileUploadService;
- @Controller
- publicclassFileUploadController{
- privateFileUploadServicefileUploadService;
- @RequestMapping("/uploadPage")
- return"/manage/fileupload/uploadPage";
- @ResponseBody
- @RequestParamMultipartFileuploadFile)throwsIOException{
- Map<String,Object>resultMap=newHashMap<>();
- returnresultMap;
- package com.bigaoread.platform.web.manage.fileupload;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import com.bigaoread.platform.service.fileupload.FileUploadService;@Controller@RequestMapping("/manage/fileupload")public class FileUploadController { ???private static final Logger log = LoggerFactory.getLogger(FileUploadController.class); ???????@Autowired ???private FileUploadService fileUploadService; ???????@RequestMapping("/uploadPage") ???public String uploadPage() { ???????return "/manage/fileupload/uploadPage"; ???} ???????@RequestMapping(value="/upload", method=RequestMethod.POST) ???@ResponseBody ???public Map<String, Object> uploadFile(HttpServletRequest request, ???????????@RequestParam MultipartFile uploadFile) throws IOException{ ???????String selectedId = request.getParameter("selectedId"); ???????Map<String, ?Object> resultMap = new HashMap<>(); ???????resultMap = fileUploadService.uploadFile(uploadFile); ???????return resultMap; ???}}
测试效果:
结果:
???????????
使用FormData进行Ajax请求上传文件到controller层的实现
原文地址:https://www.cnblogs.com/jpfss/p/8954567.html
知识推荐
- EL技术和JSTL技术
- js获取table的值,js获取td里input的值
- NFS(1)NFS介绍、 NFS服务端安装配置、配置选项、exportfs命令、NFS客户端问题
- CSS基础知识01
- jsp的基础篇
- jsp导出table数据excel表
- easyui时间控件设置为可清空——jquery-easyui-1.3.3(这个版本还没有buttons,网上的好多博文都是1.3.5之后的版本)
- onenet简介
- Jquery 获取元素标签名称
- 五十五、exportfs命令、NFS客户端问题
- HTM基础之HTML标签
- Eclipse + Apache Axis2 发布SOAP WebService(三)第一个程序Hello Axis2 SOAP!
- css3--渐变
- CSS3 backface-visibility 不面向屏幕是否可见
- xml转换成json
- robot+selenium编写web UI自动化用例
- 使用 dotnet cli 命令上传 nuget 程序包
- PHP黑魔法(该篇文章转自:http://www.91ri.org/12634.html ?目的是作为自己的笔记方便查找)
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8
不良信息举报平台
互联网安全管理备案
Copyright 2023 www.wodecom.cn All Rights Reserved