SSM实现文件上传
1、导入上传需要的jar包
- commons-fileupload-1.3.3.jar
- commons-io-2.6.jar
2、创建 index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>上传</title>
</head>
<body>
<h1>上传图片</h1>
<form action="/upload/saveUpload" method="post" enctype="multipart/form-data">
图片名称:<input type="text" name="name"><br>
图片:<input type="file" name="multipartFile" multiple="multiple"><br>
上传者:<input type="text" name="uploader"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
注意:
- 1.form表单的
method属性设置为post - 2.form表单的
enctype属性设置为multipart/form-data - 3.提供 <input type="
file" name="multipartFile">的文件上传输入框
3、在springmvc.xml文件中配置CommonsMultipartResolver文件解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置请求编码格式,必须与JSP中的pageEncoding属性一致-->
<property name="defaultEncoding" value="UTF-8"/>
<!--设置允许上传文件的最大值(2MB),单位为字节-->
<property name="maxUploadSize" value="2097152"/>
</bean>
4、编写Controller层实现文件上传
package com.itheima.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.UUID;
@Controller
@RequestMapping("/upload")
public class UploadController {
/**
* 文件上传
*
* @param multipartFile
* @param request
*/
@RequestMapping("/saveUpload")
public void saveUpload(MultipartFile multipartFile, HttpServletRequest request) {
// 以当前日期创建一个文件夹,避免单个文件夹中文件过多
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
// 截取年月日:2020-11-02
String substring = timestamp.toString().substring(0, 10);
// 设置文件上传存放的路径
String uploadPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload/" + substring);
System.out.println("获取到的图片上传地址为:" + uploadPath);
// 获取上传文件名字
String uploadName = multipartFile.getOriginalFilename();
System.out.println("原始文件名:" + uploadName);
// 利用UUID生成新的图片名字,避免原图片被覆盖
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// 截取上传文件的后缀
String suffix = uploadName.substring(uploadName.lastIndexOf("."));
// 拼接新的文件名字
String newUploadName = uuid + suffix;
System.out.println("新的文件名:" + newUploadName);
File dir = new File(uploadPath, newUploadName);
// exists() 测试此抽象路径名表示的文件或目录是否存在。
if (!dir.exists()) {
dir.mkdirs();
}
//MultipartFile自带的解析方法
try {
multipartFile.transferTo(dir);
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行代码,图片会上传到类路径下的 \WEB-INF\upload 下,会以当前日期创建文件夹存储图片
博客地址:https://www.cnblogs.com/MavenHan/p/13917316.html
SSM实现文件上传的更多相关文章
- SSH,SSM框架文件上传
一.了解文件上传 1.1 什么是文件上传 将本地文件通过流的形式写到服务器上 1.2 文件上传的技术 JspSmartUpload: 其组件是应用jsp进行B/S程序开发过 ...
- 文件上传—SSM框架文件上传
1.准备上传下载的api组件 <dependency> <groupId>commons-io</groupId> <artifactId>common ...
- ssm框架文件上传
有两种方法 导包和上传配置自己搞: 第一种: 上传单个文件: @RequestMapping("/addfile1") public String addfile(@Request ...
- maven工程 java 实现文件上传 SSM ajax异步请求上传
java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ...
- 回忆曾经的SSM框架实现文件上传
近期在使用springboot实现文件上传的功能,想到曾经用SSM做过这个功能,在这里记录一下过去实现的方式 maven添加文件上传所需的依赖 springMVC的配置文件配置一下文件上传 我实现的是 ...
- SSM + Android 网络文件上传下载
SSM + Android 网络交互的那些事 2016年12月14日 17:58:36 ssm做为后台与android交互,相信只要是了解过的人都知道一些基本的数据交互,向json,对象,map的交互 ...
- springmvc文件上传下载简单实现案例(ssm框架使用)
springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...
- 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)
原文地址:https://blog.csdn.net/niceliusir/article/details/78453560 以下是jsp+servlet和SSM分别是如何实现文件上传的方法示例 两种 ...
- SSM文件上传
**自己对于SSM文件上传的一些心得** 刚开始的时候也是在网上寻找一些简单的案例,可能我的这篇文章不是最好的,但是这些都是我自己慢慢的摸索以及自己的尝试的一些心得,希望对各位有所帮助. 其实文件的上 ...
随机推荐
- [Angular JS教程] HeroService: getHeroes failed: undefined 问题解决方法
最近在学习入门Angular JS,学习资源是https://angular.cn/tutorial, 在学习到 "https://angular.cn/tutorial/toh-pt6模拟 ...
- 探究"补阶乘大法的本质"——糖水不等式!
废话不多说先来康一条例题: 证明: 下面给出题目的一种解法(我称之为"补阶乘大法"): 思考:为什么补上一个阶乘(准确说不是阶乘,是两个数阶乘的之商)项,放缩后再给去掉,就能达到我 ...
- matlab中strcmpi比较字符串(不区分大小写)
来源:https://ww2.mathworks.cn/help/matlab/ref/strcmpi.html?searchHighlight=strcmpi&s_tid=doc_srcht ...
- ansible-基础和安装
什么是ansible ansible是python中的一套模块,系统中的一套自动化工具,可以用来作系统管理.自动化命令.等任务. ansible优势 (1) ansible是python中的一套完整的 ...
- C++单链表操作
#include <stdio.h> typedef struct _Node{ int value; _Node *next;}Node; void AddNodeTail(No ...
- linux系统上用户态pppoe收发包过程
花了几天看了一下ppp/pppoe有关的东西,画了一下用户态pppoe收发包的示意图.
- day39 Pyhton 并发编程02 后
一.开启子进程的另一种方式 import os from multiprocessing import Process class MyProcess(Process): def __init__(s ...
- day16 Pyhton学习
1.range(起始位置) range(终止位置) range(起始,终止位置) range(起始,终止,步长) 2.next(迭代器) 是内置函数 __next__是迭代器的方法 g.__next_ ...
- selenium切换iframe
from selenium import webdriver br = webdriver.Chrome() br.get("tps://study.163.com/") ifra ...
- Baolu CSV Data Set Config
1.背景 大家在平常使用JMeter测试工具时,对CSV Data Set Config 配置元件肯定不会陌生.如果我们的压测场景涉及到数据库更新操作(如:转账接接口)则需要对参数化数据进行分块,可就 ...