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 ...
随机推荐
- 获取select的值
<!-- html --> <select id=''check> <option>北京</option> <option>北京</o ...
- Linux date cal bc和一些快捷键学习
1 date 日期 2 cal 日历 具体每年日历 cal +年份 3 bc 计算器 如果有小数点需要scale命令,scale=数字 quit退出 4 [Tab]按键 :命令补全和档案补 ...
- css优化和重排
转:http://caibaojian.com/css-reflow-repaint.html
- Web SQL与indexedDB
虽然在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数 ...
- 2017 Chinese Multi-University Training, BeihangU Contest
2017 Chinese Multi-University Training, BeihangU Contest Add More Zero 思路:log10(2^m) = m*log10(2) 代码 ...
- Tomcat下配置JNDI的三种方式
最近在整理项目上的配置文件,正好看到了数据源配置,想着配置方式有多种,便趁热打铁,记录下常规的Tomcat配置数据源的方式 1.单个工程配置 找到Tomcat下的server.xml文件,在Conte ...
- Apache、nginx 、lighttpd性能比较
Apache.nginx .lighttpd性能比较 1. web服务器简介 1. lighttpd Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全.快速. ...
- flutter flutter_cupertino_date_picker 时间插件的用法
https://blog.csdn.net/sinat_37255207/article/details/100041023 https://github.com/wuzhendev/flutter- ...
- python镜像
国内镜像列表豆瓣: http://pypi.doubanio.com/simple清华: https://pypi.tuna.tsinghua.edu.cn/simple科大: https://mir ...
- 获取节点 document.getElementBy{Id,Name,TagName,ClassName
document.getElementById(" "); document.getElementByName(" "); document.getElemen ...