在SpringBoot中实现文件上传

        1.创建一个SpringBoot的项目,需要导入spring-boot-starter-web的依赖

         <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

        2.编写文件的核心配置application.properties

server.port=2100
#文件的保存地址
file-save-path=D:/a/f/picture/#是否开启文件上传支持,默认为true。
spring.servlet.multipart.enabled=true 
#文件写入磁盘的阈值,默认为0。
spring.servlet.multipart.file-size-threshold=0
#上传文件的临时保存位置。
spring.servlet.multipart.location=D:/1javaweb/b
#上传的单个文件的最大大小,默认为1MB。
spring.servlet.multipart.max-file-size=30MB
#多文件上传时文件的总大小,默认为10MB。
spring.servlet.multipart.max-request-size=10MB
#文件是否延迟解析,默认为false。
spring.servlet.multipart.resolve-lazily=false

        3.编写控制层

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;@RestController
public class FileUploadController {@Value("${file-save-path}")private String fileSavePath;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/");@RequestMapping("/upload")public String upload(MultipartFile uploadFile, HttpServletRequest req) {String filePath = "";String format = sdf.format(new Date());File folder = new File(fileSavePath + format);if (!folder.isDirectory()) {folder.mkdirs();String oldName = uploadFile.getOriginalFilename();String newName = UUID.randomUUID().toString() +oldName.substring(oldName.lastIndexOf("."), oldName.length());try {uploadFile.transferTo(new File(folder, newName));filePath = req.getScheme() + "://" + req.getServerName() + ":" +req.getServerPort() + "/uploadFile/" + format + newName;} catch (IOException e) {return "上传失败! ";}}String oldName = uploadFile.getOriginalFilename();String newName = UUID.randomUUID().toString().replace("-","") +oldName.substring(oldName.lastIndexOf("."), oldName.length());try {uploadFile.transferTo(new File(folder, newName));filePath = req.getScheme() + "://" + req.getServerName() + ":" +req.getServerPort() + "/uploadFile/" + format + newName;} catch (IOException e) {return "上传失败! ";}return filePath;}
}

        4.在resources下创建static目录,然后创建update.html页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title></head>
<body><!--enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。-->
<form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="uploadFile" value="请选择文件" required><input type="submit" value="上传">
</form>
</body>
</html>

        5.如果想要在缓存中查询刚刚上传的文件或图片,需要添加以下配置类

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Value("${file-save-path}")private String fileSavePath;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/uploadFile/**").addResourceLocations("file:"+fileSavePath);}
}

        6.如果想要任何ip都能访问,需要添加以下配置类

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CarsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")//所有的都配置跨域.allowedOrigins("*")//所有的请求可以访问跨域的资源.allowedHeaders("*")//所有的请求头都可以访问.allowedMethods("GET","POST","PUT","DELETE","HEAD","OPTION")//什么类型的请求都可以访问后端资源.maxAge(3600)//服务端存储相关信息的时间      秒;}
}

        7.启动我们的SpringBoot项目,访问该地址

http://localhost:2100/update.html

         如果我们配置了刚刚的WebConfig配置类,上传后的这个地址我们可以直接在浏览器进行访问,就可以看到我们刚刚上传的图片

         如果配置了跨域访问,则可以通过我们的ip访问,在别的计算机上也可以访问

查询本机计算机的ip: 

       1. 快捷键: win+r,在弹出的窗口输入cmd后点击确定

         2.输入

ipconfig

        找到自己电脑在当前局域网下的ip

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET SqlSuger初次使用

文章目录 前言SqlSuger测试DB Fisrt和CodeFirst 前言 我之前在B站上面发视频说如何使用EF框架去生成实体类。我当时做了Mysql,Sql server,Sqlite的适配。但是下面评论区说SqlSuger很好用&#xff0c;而且很多公司都用SqlSuger。 B站视频&#xff1a;C#如何快速开发数据库业务…

云原生之深入解析Prometheus的安装部署和原理分析

一、Prometheus 简介 ① Prometheus 特性 Prometheus 最开始是由 SoundCloud 开发的开源监控告警系统&#xff0c;是 Google BorgMon 监控系统的开源版本。在 2016 年&#xff0c;Prometheus 加入 CNCF&#xff0c;成为继 Kubernetes 之后第二个被 CNCF 托管的项目。随着 Kub…

15 - 信号处理设计模式

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. Linux应用程序安全性讨论1.1 问题1.2 不同场景1.2.1 场景一&#xff1a;不需要处理信号1.2.2 场景二&#xff1a;需要处理信号 2. 场景…

部署LAMP 平台(二十四)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、PHP安装配置 1. PHP的作用 2. PHP安装 2.1 yum安装 2.2 PHP语言简介 三、安装 四、启动 五、书写测试页面 六、客户端访问 七、书写连接数据库页…

龙迅LT8711HE DP/Type-C输入转HDMI2.0

LT8711HE是一款高性能C/DP1.2到HDMI2.0转换器&#xff0c;设计用于将USB C型源或DP1.2源连接到HDMI2.0接收器。 LT8711HE集成了DP1.2兼容接收机和HDMI2.0兼容发射机。此外&#xff0c;还包括两个CC控制器&#xff0c;用于CC通信&#xff0c;以实现DP-Alt模式和电源输送功能&…

微服务系列文章之 Redisson实现分布式锁(3)

一、概述 1、技术架构 项目总体技术选型 SpringBoot2.4.5 Maven3.5.4 Redisson3.5.4 lombok(插件)2、加锁方式 该项目支持 自定义注解加锁 和 常规加锁 两种模式 自定义注解加锁 DistributedLock(value"goods", leaseTime5)public String lockDecreaseStock(…

8、链路层以太网协议,ARP协议32

网络层IP协议描述了通信中的起点到终点&#xff0c;但是数据不是飞过去的&#xff0c;是经过了大量的中间节点转发完成的。 一、以太网协议 1、MAC地址 物理硬件地址&#xff0c;是每一块网卡在出厂时设定的地址&#xff0c;固定且不可修改&#xff08;早期&#xff0c;现在可…

C语言模拟实现字符串处理函数

需要多一点点勇气&#xff0c;来面对变差的自己 大家好&#xff0c;我是纪宁。 这篇文章为大家带来的是5大字符串处理函数的模拟实现。 文章目录 1.strlen函数的模拟实现 2.strcpy函数的模拟实现 3.strcmp函数的模拟实现 4.strcat函数的模拟实现 5.strstr函数的模拟实现…

软件测试|SQL常用语法,你都会吗?

前言 SQL作为一门语言&#xff0c;和其他编程语言一样&#xff0c;都是需要遵循一些特定的规范和准则的&#xff0c;这也就是我们常说的语法&#xff08;Syntax&#xff09;。 下面是几个SQL的语法规则&#xff1a; 所有的 SQL 语法都必须以关键字&#xff08;也称命令&…

04-spring配置文件加载过程

文章目录 spring配置文件加载过程 spring配置文件加载过程 调用refresh方法中obtainFreshBeanFactory() Overridepublic void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {// Prepare this context for refreshing.…

我们如何在 Elasticsearch 8.6、8.7 和 8.8 中加速数据摄入

作者&#xff1a;Adrien Grand, Joe Gallo, Tyler Perkins 正如你们中的一些人已经注意到的&#xff0c;Elasticsearch 8.6、8.7 和 8.8 在各种数据集上带来了良好的索引加速&#xff0c;从简单的关键字到繁重的 KNN 向量&#xff0c;以及摄取管道繁重的摄取工作负载。 摄取涉及…

推荐10个Flutter开源项目

作为跨平台应用开发的领头羊,Flutter从已发布就受到广大开发者的追捧。使用Flutter技术开发的应用不仅体验上无限接近原生应用,在开发效率上也是其他技术无法比拟的。随着其开发者社区的不断壮大,Flutter生态系统已经相当强大,并且众多开源应用程序也相继诞生。这些开源应用…