这里介绍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表单文件上传的更多相关文章

  1. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  2. form表单文件上传 servlet文件接收

    需要导入jar包 commons-fileupload-1.3.2.jar commons-io-2.5.jar Upload.Jsp代码 <%@ page language="jav ...

  3. form表单文件上传提交且接口回调显示提交成功

    前端: <form method="post" enctype="multipart/form-data" id="formSubmit&quo ...

  4. 通过HttpClient4.5模拟Form表单文件上传

    public static void main(String[] args) { CloseableHttpClient httpclient = HttpClients.createDefault( ...

  5. 基于Spring3 MVC实现基于form表单文件上传

    http://blog.csdn.net/jia20003/article/details/8474374/

  6. 表单文件上传,ajax文件上传

    原创链接:http://www.cnblogs.com/yanqin/p/5345562.html html代码  index.jsp(表单文件上传) <form action="sh ...

  7. Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request对象方法,属性和Response对象,form表单的上传

    Django---CBV和FBV的使用,CBV的流程,给视图加装饰器,Request请求对象方法,属性和Response响应对象,form表单的上传 一丶CBV和FBV       在Django中存 ...

  8. 混合表单文件上传到数据库(基于TOMCAT)

    在实际的开发中在实现文件上传的同时肯定还有其他信息需要保存到数据库,就像混合表单在上传完毕之后需要将提交的基本信息插入数据库. 在这个demo中需要用到这个架包来帮助实现 1.定义一个公共类实现文件上 ...

  9. 【温故知新】Java web 开发(三)Form表单与上传下载文件

    简介:在一和二的基础之上,这次来记录下如何在页面提交表单数据,以及文件的上传和下载整个流程,请求也不仅限于GET了,也有POST了. 1. 为了方便,在 webapp 下直接新建一个 index.ht ...

随机推荐

  1. httpd安装mod_jk模块

    1.1 使用yum安装的httpd安装mod_jk模块 mod_jk模块下载地址官网 安装httpd和httpd-devel(这个包会有apxs必须要有的) [root@apache ~]# yum ...

  2. C#实现10进制转2进制

    这几天在复习计算机原理,看到二进制忽然想到二进制转10进制的公式,然后转念一想10进制转二进制的公式好像没印象,那索性自己写出来. 结果学渣的我发现,并不能写出来!什么数列,对数,xx函数忘得一干二净 ...

  3. JLOI2016 侦查守卫

    侦查守卫 小R和B神正在玩一款游戏.这款游戏的地图由 N 个点和 N-1 条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是一棵有 N 个节点的树. 游戏中有一种道具叫做侦查守 ...

  4. NativeRenderingPlugin IOS

    https://bitbucket.org/Unity-Technologies/graphicsdemos/src/77f014c12161e5c25d902e2c5697dd0c45ce3e35/ ...

  5. Filtering Approaches for Real-Time Anti-Aliasing(2011 SIGGRAPH)

    Filtering Approaches for Real-Time Anti-Aliasing(2011 SIGGRAPH) 在2011的SIGGRAPH上,NVIDA提出了FXAA3.1,本文主要 ...

  6. BZOJ 3489: A simple rmq problem (KD-tree做法)

    KD树水过这道可持久化树套树-其实就是个三维偏序 题解戳这里 CODE #include <bits/stdc++.h> using namespace std; #define ls ( ...

  7. log4j.properties通用配置

    一.Log4j的配置文件分类Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties(key=value)文件,其中properties格式的配置文件最为常用,其有一个固定的 ...

  8. More development resources

    社区 名称 官网 google https://www.google.com/ github https://github.com/ StackOverflow https://stackoverfl ...

  9. printf:函数参数计算从右向左,从左向右?

    造冰箱的大熊猫@cnblogs 2019/8/3 1.问题 某天写了如下代码: unsigned char ReadByteFromFile ( FILE * fp ) { unsigned char ...

  10. python2.X与Python3.X区别

    __future__模块 [回到目录] Python 3.x引入了一些与Python 2不兼容的关键字和特性,在Python 2中,可以通过内置的__future__模块导入这些新内容.如果你希望在P ...