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 ...
随机推荐
- (十二)A64
一.AC108驱动移植 1.驱动添加 cp r18/lichee/linux-4.4/sound/soc/codecs/ac108.* a64/linux-3.10/sound/soc/codecs/ ...
- Hadoop_31_MapReduce参数优化
1.资源相关参数 (1) mapreduce.map.memory.mb: 一个Map Task可使用的资源上限(单位:MB),默认为1024.如果Map Task实际使用 的资源量超过该值,则会被强 ...
- Oralce问题之ORA-12560:TNS协议适配器错误
在Windows系统中,通过CMD命令打开命令窗口,通过命令:sqlplus / as sysdba回车后提示 协议适配器错误 可能原因: (1).Oralce数据库监听服务没启动起来 通过开始-&g ...
- 实用:Java基础流计算
java的流不常用,每次学习完都懂,过了一段时间就全忘了... 记录下一点实用的东西... 需求: 截取文件的前250kb内容 public static void main(String[] arg ...
- 百度人脸识别java html5
1.前端thymeleaf+h5 index.html 人脸识别+定位,用的百度sdk <!DOCTYPE html> <html xmlns="http://www ...
- 箭头函数与定时器的this指向问题
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 箭头函数本身没有this,this继承上级的this. 定时器中箭头函数的this指向包含定时器的函数,所以定时器中的箭头函数要 ...
- 开发中少不了的Fun -- js判断设备
判断是否是移动设备 var ua = window.navigator.userAgent.toLowerCase(); if(ua.indexOf('mobile')!== -1){ return ...
- run zabbix with docker
#!/bin/bashdocker run --name some-zabbix-server-mysql -p 10051:10051 --net=host -e DB_SERVER_HOST=&q ...
- Eclipse里修改SVN的用户名和密码
删除Eclipse subclipse plugin中记住的SVN用户名密码: 1) 查看你的Eclipse中使用的是什么SVN Interface windows > preferenc ...
- 【Android-连接数据库】 直接连接SqlServer数据库
一.测试过的开发环境 Eclispse + SqlServer2008R2 二.下载支持Android的SQL驱动 只能下载1.2.7版本的,将 jtds-1.2.7.jar 包放在android项目 ...