SSM+form表单文件上传
这里介绍SSM如何配置上传文件
配置springmvc.xml:
<!--配置上传下载-->
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver" />
以及在WEB-INF下面的web.xml配置文件的相关设置
<servlet>节点里面
-1表示默认
<!--配置上传文件大小-->
<multipart-config>
<max-file-size>-1</max-file-size>
<max-request-size>-1</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
然后来个添加图片的示例
Controller
//图片上传
@RequestMapping(value = "/addPicture", method = RequestMethod.POST)
public String addPicture(MultipartFile img, Model model, HttpServletRequest request) {
ArrayList<String> strings = new ArrayList<>();
//得到上传文件实际路径
String realPath = request.getServletContext().getRealPath(File.separator + "imges");
if (img.isEmpty()) {
strings.add("请选择文件!");
}
//得到文件的类型
String fileType = img.getContentType();
//第一种方式Arrays.asList("image/jpeg","image/png")
if (!fileType.contains("image/")) {
strings.add("只允许上传图片!");
}
//只允许上传的图片小于5MB
if (img.getSize() > 1024 * 1024 * 1024 * 5) {
strings.add("只允许上传5M的图片!");
}
if (!strings.isEmpty()) {
model.addAttribute("errs", strings);
return "empAdd";
}
try {
String[] formatName = getFormatName(img.getOriginalFilename());
img.transferTo(new File(realPath + File.separator + formatName[0] + formatName[1] + formatName[2]));
//想要得到图片的相对路径/方法体返回的数组拼接在一起即可保存到数据库。
} catch (IOException e) {
e.printStackTrace();
}
return "empAdd";
} public String[] getFormatName(String fileName) {
//设置日期格式yyyy-MM-dd
SimpleDateFormat df = new SimpleDateFormat("_yyyyMMddHHmmss");
// new Date()为获取当前系统时间
String now = df.format(new Date());
//获得文件名去掉后缀
String prefix = fileName.substring(0, fileName.lastIndexOf("."));
//得到文件后缀带.
String postfix = fileName.substring(fileName.lastIndexOf("."));
return new String[]{prefix, now, postfix};
}
jsp方面
需要注意的是,一定要写 enctype="multipart/form-data",否则springmvc就会解析失败。这个的作用就是将form表单的数据以二进制的方式传输。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<div style="margin:auto">
<form:form action="/addPicture" method="post" enctype="multipart/form-data">
<input type="file" name="img" />
<input type="submit"/>
</form:form>
</div>
错误信息显示:
<c:forEach items="${errs}" var="e">
<div>${e}</div>
</c:forEach>
jQuery+ajax方式
<input type="file" id="fff"/>
<input type="button" id="gg" value="提交测试"/>
//ajax上传文件
$("#gg").on("click", function () {
var data = new FormData();
data.append("aaa", "第一个数据");
data.append("file", document.querySelector("#fff").files[0]);
$.ajax({
url:"/getFile",
method:"post",
contentType:false,
data:data,
processData:false
});
});
后台代码
@RequestMapping(value = "/getFile" ,method = RequestMethod.POST)
public String gg(MultipartFile file, String aaa){
System.out.println(file.getOriginalFilename()+"___"+aaa);
return "{\"msg\":\"succeed\"}";
}
具体后台实现同上。。。
SSM+form表单文件上传的更多相关文章
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...
- form表单文件上传 servlet文件接收
需要导入jar包 commons-fileupload-1.3.2.jar commons-io-2.5.jar Upload.Jsp代码 <%@ page language="jav ...
- form表单文件上传提交且接口回调显示提交成功
前端: <form method="post" enctype="multipart/form-data" id="formSubmit&quo ...
- 通过HttpClient4.5模拟Form表单文件上传
public static void main(String[] args) { CloseableHttpClient httpclient = HttpClients.createDefault( ...
- 基于Spring3 MVC实现基于form表单文件上传
http://blog.csdn.net/jia20003/article/details/8474374/
- 表单文件上传,ajax文件上传
原创链接:http://www.cnblogs.com/yanqin/p/5345562.html html代码 index.jsp(表单文件上传) <form action="sh ...
- Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传
Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV 在Django中存 ...
- 混合表单文件上传到数据库(基于TOMCAT)
在实际的开发中在实现文件上传的同时肯定还有其他信息需要保存到数据库,就像混合表单在上传完毕之后需要将提交的基本信息插入数据库. 在这个demo中需要用到这个架包来帮助实现 1.定义一个公共类实现文件上 ...
- 【温故知新】Java web 开发(三)Form表单与上传下载文件
简介:在一和二的基础之上,这次来记录下如何在页面提交表单数据,以及文件的上传和下载整个流程,请求也不仅限于GET了,也有POST了. 1. 为了方便,在 webapp 下直接新建一个 index.ht ...
随机推荐
- redis cluster(集群)模式的创建方式
redis常用的架构有三种,单例.哨兵.集群,其他的都说过了,这里只简单介绍集群搭建. 单例最简单没什么好说的. 哨兵之前说过,该模式下有哨兵节点监视master和slave,若master宕机可自动 ...
- 9种Java单例模式详解(推荐)
单例模式的特点 一个类只允许产生一个实例化对象. 单例类构造方法私有化,不允许外部创建对象. 单例类向外提供静态方法,调用方法返回内部创建的实例化对象. 懒汉式(线程不安全) 其主要表现在单例类在外 ...
- Educational Codeforces Round 40 C. Matrix Walk( 思维)
Educational Codeforces Round 40 (Rated for Div. 2) C. Matrix Walk time limit per test 1 second memor ...
- PAT乙级1037
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805284923359232 题解 还算简单,就是模拟我们在生活 ...
- CF15E Triangles
思路 有四种方法,L,R,L->R,只走上面的小三角形 然后组合方案数\(2f^2+8f+10\) 然后求f,递推一下就好啦(其实是太麻烦了) 时间和空间复杂度都是\(O(n)\) 代码 #in ...
- Cow Hopscotch (单调队列 + DP)
链接:https://ac.nowcoder.com/acm/contest/1113/K来源:牛客网 The cows have reverted to their childhood and ar ...
- metal feature and specification
https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf 宝贝 https://developer.apple.com/metal/ ...
- formData+ajax文件上传
html代码: <form class="form-horizontal" enctype="multipart/form-data" method=&q ...
- [2019牛客多校第二场][A. Eddy Walker]
题目链接:https://ac.nowcoder.com/acm/contest/882/A 题目大意:圆上有\(n\)个点,标号从\(0\)到\(n-1\),初始一个人在点\(0\),每次会等概率向 ...
- Codeforces Round #587 (Div. 3) D. Swords
链接: https://codeforces.com/contest/1216/problem/D 题意: There were n types of swords in the theater ba ...