案例14 Spring MVC文件上传案例

基于Spring MVC实现文件上传:

  1. 使用commons-fileupload实现上传文件到本地目录。

  2. 实现上传文件到阿里云OSS和从阿里云OSS下载文件到本地。

1. 创建项目

选择Maven快速构建web项目,项目名称为case14-springmvc03。

2. 配置Maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wfit.springmvc</groupId><artifactId>springmvc02</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!--spring mvc--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.8</version></dependency><!--servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--fileupload--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency><!--aliyun-sdk-oss--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency></dependencies>
</project>

3. 创建Spring MVC配置文件

src.main.resources目录下创建spring-mvc.xml。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--开启注解--><context:component-scan base-package="com.wfit"/><!--启用mvc--><mvc:annotation-driven></mvc:annotation-driven><!--文件上传解析器--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--设置上传大小 最大1M--><property name="maxUploadSize" value="1048576"/></bean>
</beans>

4. 配置web.xml

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app><!--解决POST中文乱码问题 过滤器--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--配置前端控制器DispatcherServlet--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--加载SpringMVC文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><!--启动容器时加载servlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><!--表示拦截所有请求--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

5. 创建UploadController类

在src.main.java.com.wfit.upload目录下创建UploadController类,实现文件上传。

@Controller
@RequestMapping("/upload")
public class UploadController {/*** 文件上传* @param file* @return*/@PostMapping("/upload")@ResponseBodypublic String upload(MultipartFile file) throws IOException {//验证文件是否为空if(ObjectUtils.isEmpty(file) || file.getSize() <=0){return "file is empty";}//创建上传文件位置File uploadDir = new File("D:\\upload");//获取文件名String fileName = file.getOriginalFilename();//创建目标文件File desFile = new File(uploadDir,fileName);//执行上传操作file.transferTo(desFile);return "success";}
}

6. 创建OssController类

在src.main.java.com.wfit.upload目录下创建OssController类,实现上传文件到阿里云OSS和从阿里云OSS下载文件到本地。

@Controller
@RequestMapping("/oss")
public class OssController {//访问OSS的域名private static String endpoint = "oss-cn-beijing.aliyuncs.com";//accessKeyId和accessKeySecret是OSS的访问密钥private static String accessKeyId = "<yourAccessKeyId>";private static String accessKeySecret = "<yourAccessKeySecret>";//Bucket用来管理所存储Object的存储空间private static String bucketName = "<yourBucketName>";//目标文件private static String objectName = "upload/123.txt";/*** 上传文件到阿里云OSS* @return*/@PostMapping("/upload")@ResponseBodypublic String upload(MultipartFile file) throws IOException {//验证文件是否为空if(ObjectUtils.isEmpty(file) || file.getSize() <=0){return "file is empty";}InputStream inputStream = file.getInputStream();// 创建OSSClient实例OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 创建PutObjectRequest对象PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);// 设置该属性可以返回response。如果不设置,则返回的response为空putObjectRequest.setProcess("true");// 创建PutObject请求PutObjectResult result = ossClient.putObject(putObjectRequest);// 如果上传成功,则返回200System.out.println(result.getResponse().getStatusCode());} catch (Exception e) {System.out.println("Error Message:" + e.getMessage());} return "success";}/*** 下载阿里云文件到本地* @return*/@PostMapping("/download")@ResponseBodypublic String download(String objName,String path) throws IOException {//下载目录String pathName = "download/123.txt";// 创建OSSClient实例OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 下载Object到本地文件,并保存到指定的本地路径中ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(pathName));} catch (Exception e) {System.out.println("Error Message:" + e.getMessage());}return "success";}
}

7. Postman执行上传文件到本地目录

8. Postman执行上传到阿里云OSS

9. Postman执行从阿里云OSS下载文件到本地

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1379936.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

若依如何使用(基本环境的配置)

本文章转载于公众号&#xff1a;王清江唷,仅用于学习和讨论&#xff0c;如有侵权请联系 QQ交流群&#xff1a;298405437 本人QQ&#xff1a;4206359 具体视频地址:8 跑后端_哔哩哔哩_bilibili 1、Ruoyi-Vue是什么&#xff1f; 借用官网原话来解释&#xff1a; 一直想做一款…

08-1_Qt 5.9 C++开发指南_QPainter绘图

文章目录 前言1. QPainter 绘图系统1.1 QPainter 与QPaintDevice1.2 paintEvent事件和绘图区1.3 QPainter 绘图的主要属性 2. QPen的主要功能3. QBrush的主要功能4. 渐变填充5. QPainter 绘制基本图形元件5.1 基本图像元件5.2 QpainterPath的使用 前言 本章所介绍内容基本在《…

小型健身俱乐部管理系统的设计与实现_kaic

随着生活水平不断提高&#xff0c;人们的健身意识也不断加强&#xff0c;健身俱乐部作为专业的健身服务行业&#xff0c;已经越来越受到人们的亲睐。随着自身的规模不断扩大&#xff0c;客户数量的增多&#xff0c;传统的管理模式已不能适应现代健身机构的发展趋势&#xff0c;…

毕业设计——基于SSM的健身房管理系统

该系统已经上传CSDN官方资源,下载地址: https://download.csdn.net/download/qq_16397653/14027661 1.包含源程序&#xff0c;数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用&#xff0c;可以在此基础上进行扩展完善 开发环境&#xff1a; Eclipse ,M…

健身房会员管理系统(Java+Web+MySQL)

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 课题背景 1 1.2 课题研究的目的和意义 2 1.3 课题发展前景及趋势 3 1.4 课题内容简介 4 1.5 开发工具 4 1.5.1 MyEclipse 5 1.5.2 Tomcat 5 1.5.3 MySQL 5 1.5.4 JSP 6 1.5.5 JavaScript 6 1.6 软硬件需求 7 第二章 需求分析 8 2.…

如何选择好的健身房管理系统而且还不收费

如何选择好的健身管理系统而且还不收费 “迄今为止&#xff0c;中国健身行业没有好用的健身管理系统CRM商户端。身为健身从业者&#xff0c;需求没有被满足&#xff0c;我很遗憾。三年过去了&#xff0c;我仍然是健身从业者&#xff0c;这个问题依然没有解决&#xff0c;我决定…

计算机毕业设计——健身房管理系统

Java毕业设计工作中所做的代码研发以及论文编写&#xff0c;是对于我们大学四年的知识做一个总结&#xff0c;同时也是对我们的文字编写能力的一个检验。在大学生涯结束之际&#xff0c;应当对自己有两点觉悟&#xff1a; 1、既然学了软件工程这门专业&#xff0c;在今后不管会…

基于Django的健身房管理系统

目 录 摘 要 I Abstract II 1 引言 1 1.1选题背景及意义 1 1.2发展现状 1 1.3研究主要内容 2 2 关键技术介绍 4 2.1相关技术简介 4 2.1.1 B/S体系相关介绍 4 2.1.2 Python语言介绍 4 2.1.3 Djang框架介绍 5 2.2技术方案选择 6 2.3开发环境的确定 7 3 系统分析 8 3.1可行性分析 …

健身房管理系统毕业设计c语言,健身房会员管理系统设计与实现

健身房会员管理系统设计与实现 摘要&#xff1a;随着信息管理技术在当前各个管理领域上的普遍使用&#xff0c;信息系统管理的技术越来越趋于成熟&#xff0c;目前大部分健身房管理会员信息还是使用手动记录的方式&#xff0c;不但信息冗杂、录入困难&#xff0c;还不方便查阅&…

基于android的健身管理APP(ssm+uinapp+Mysql)

基于android的健身管理APP(ssmuinappMysql) 管理员&#xff1a;管理员使用本系统涉到的功能主要有首页、个人中心、用户管理、健身课程管理、课程类型管理、健身圈子管理、系统管理等功能用户&#xff1a;用户进入app可以实现首页、健身资讯、健身课程、健身圈子、我的等,在我的…

安全第二次

一&#xff0c;iframe <iframe>标签用于在网页里面嵌入其他网页。 1&#xff0c;sandbox属性 如果嵌入的网页是其他网站的页面&#xff0c;因不了解对方会执行什么操作&#xff0c;因此就存在安全风险。为了限制<iframe>的风险&#xff0c;HTML 提供了sandb…

Linux:Shell编辑之文本处理器(sed)

目录 绪论 1、sed的原理&#xff1a;读取 执行 显示 三个过程 2、sed 文本内容处理工具&#xff0c;文件过大怎么办&#xff1f; 3、sed的操作选项 3.1 常用选项 3.2 操作符 3.3 行号的范围打印 3.4 对包含指定字符串的内容进行打印 3.5 删 3.5.1 正则表达式删除 3.6…

【计算机视觉|生成对抗】条件生成对抗网络(CGAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Conditional Generative Adversarial Nets 链接&#xff1a;[1411.1784] Conditional Generative Adversarial Nets (arxiv.org) 摘要 生成对抗网络&#xff08;Generative Adversarial…

打靶练习:WestWild 1.1(一个简单但不失优雅的Ubuntu靶机)

主机发现和nmap信息收集 //主机发现 sudo nmap -sn 192.168.226.0/24 //扫描整个C段//端口扫描//初步扫描 sudo nmap -sT --min-rate 10000 -p- 192.168.226.131 -oA nmapscan/ports //用TCP的三次握手&#xff0c;以速率10000扫描1-65535端口&#xff0c;扫描结果以全格式…

VM虚拟机搭建详细步骤

一、安装好VMware&#xff0c;双击exe程序&#xff0c;启动软件 二、新建虚拟机 三、选择“典型”&#xff0c;点击“下一步” 四、先择“稍后安装操作系统”&#xff0c;点击“下一步” 五、选择操作系统&#xff0c;以windows server 2008 为例&#xff0c;上方选择“Microso…

在Centos环境中搭建Nginx环境

一、Nginx概念简介 Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 Nginx与redis相同&#xff0c;都是基于多路复用模型构建出的产物&#xff0c;因此它与R…

机器学习实战3-随机森林算法

文章目录 集成算法概述sklearn中的集成算法模块 RandomForestClassifier重要参数&&随机森林的分类器控制基评估器的参数n_estimatorssklearn建模流程复习交叉验证我们进行10次交叉验证&#xff0c;观察随机森林和决策树的效果n_estimators学习曲线 bootstrap & oob…

华为鸿蒙全屋定制,高速Wi-Fi信号难以配置?华为全屋定制一站解决

目前&#xff0c;采用5GHz频段的Wi-Fi路由器逐渐在大众家庭中普及开来&#xff0c;5G Wi-Fi已然成为高速网络的代名词之一。但是由于高频信号的物理特性&#xff0c;5GHz信号比原来的2.4GHz信号波长更短&#xff0c;信号衰减更快&#xff0c;很多使用单个路由器户型复杂的房屋会…

华为HiLink、海尔智家、智汀各自的核心优势?

“智能家居”这个概念出现的很早&#xff0c;但由于缺乏智能相关技术支撑&#xff0c;使得很多家电产品之间缺乏联动&#xff0c;在兼容方面缺乏数据共享&#xff0c;无法真正带给用户"智能互联"的体验等等。 在手机应用市场之中搜索“智能家居”&#xff0c;相关APP…

华为q1设置虚拟服务器,华为路由Q1怎么用 华为路由Q1设置上网图文教程

华为路由Q1怎么设置?作为一款主流智能路由器产品&#xff0c;华为路由Q1创新性采用子母路由的概念&#xff0c;通过子路由器即插即用子母机互联&#xff0c;达到提升覆盖面积的效果&#xff0c;更适合大户型使用&#xff0c;以下是小编带来的华为路由Q1设置上网教程&#xff0…