springboot上传图片
springboot上传图片
新建一个springboot项目;
在java/main/com/ljx 创建一个controller.fileController类
内容如下:
package com.ljx.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.websocket.server.PathParam;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
/**
* @author 李捷禧
* Date: 2022/12/13
* ClassName: fileController
*/
@Controller
public class fileController {
@GetMapping(value = "/file")
public String file() {
return "/file";
}
@PostMapping(value = "/fileUpload")
public String fileUpload(@RequestParam(value = "file") MultipartFile file, Model model, HttpServletRequest request) {
if (file.isEmpty()) {
System.out.println("文件不能为空!");
}
// 文件名
String fileName = file.getOriginalFilename();
//后缀名,在文件名后面加“."
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 上传后的路径,自己设定要跟后面获取图片位置一样
String filePath = "E://work//image//";
// 新文件名
fileName = UUID.randomUUID() + suffixName;
//判断文件夹里面是否存在
File dest = new File(filePath + fileName);
//不存在就新建一个图片文件
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
//将文件存到新建文件的位置去
try {
file.transferTo(dest);
} catch (IOException e) {
e.printStackTrace();
}
//对应上面的文件路径
String filename = "/work/image/" + fileName;
model.addAttribute("filename", filename);
return "/file";
}
}
在com/ljx/config一个配置类
内容如下:
package com.ljx.config;
/**
* @author 李捷禧
* Date: 2022/12/13
* ClassName: MyWebAppConfigurer
*/
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 MyWebAppConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/work/image/**").addResourceLocations("file:E:/work/image/");
}
}
在application.properties文件加一下配置:
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp在webapp/WEB-INF创建一个file.jsp
内容如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/fileUpload" method="post" enctype="multipart/form-data">
<label>上传图片</label>
<input type="file" name="file"/>
<input type="submit" value="上传"/>
</form>
<p>图片:</p>
<img src="${filename}"/>
</body>
</html>
!注意:在此之前,需要项目配置好 jsp可运行环境,见以往博客园
运行结果是:

springboot上传图片的更多相关文章
- https://segmentfault.com/a/1190000012844836---------关于SpringBoot上传图片的几种方式
关于SpringBoot上传图片的几种方式 https://segmentfault.com/a/1190000012844836
- Springboot上传图片并访问
Springboot上传图片并访问 步骤 配置绝对路径,并将这个绝对路径添加到springboot静态资源目录中. 文件上传使用绝对路径保存.返回web相对路径,前端加上域名和项目路径,生成完整的路径 ...
- springboot上传图片大小限制
背景:springboot项目上传图片超过1M报错,经了解,springboot默认上传文件1M 需求:更改默认配置,控制上传文件大小 方法:①更改配置文件(经试验不可行,不知道为什么):②更改启动B ...
- [原创]SpringBoot上传图片踩的坑
最近项目里面有个需求,要上传图片到阿里云的OSS服务.所以需要写个上传图片的接口给前端. 这个简单的接口本来就给分配了1个工时,感觉也蛮简单的.但编码过程中遇到了好几个问题,现在一一记录下来,避免再次 ...
- springboot 上传图片与回显
在网上找了很多例子,不能完全契合自己的需求,自行整理了下.需求是这样的:项目小,所以不需要单独的图片服务器,图片保存在服务器中任意的地方,并且可以通过访问服务器来获取图片.话不多说上代码: 1.依赖 ...
- springboot 上传图片
1. 创建多层目录 创建多层目录要使用File的mkdirs()方法,其他可以使用mkdir()方法. 2. 文件大小限制 配置文件中,在spring1.4以后要使用 ` spring.http.mu ...
- springboot 上传图片,地址,在页面展示图片
package com.cxwlw.zhcs.controller.api;import org.springframework.stereotype.Controller;import org.sp ...
- 如何在SpringBoot当中上传多个图片或者上传单个图片 工具类
如何在SpringBoot当中上传多个图片[上传多个图片 ] 附赠工具类 1.SpringBoot 上传图片工具类 public class SpringUploadUtil { /*** * 上传图 ...
- ckeditor4.7配置图片上传
ckeditor作为老牌的优秀在线编辑器,一直受到开发者的青睐. 这里我们讲解下 ckeditor最新版本4.7的图片上传配置. https://ckeditor.com/ 官方 进入下载 https ...
- Spring Boot进阶系列二
上一篇文章,主要分析了怎么建立一个Restful web service,系列二主要创建一个H5静态页面使用ajax请求数据,功能主要有添加一本书,请求所有书并且按照Id降序排列,以及查看,删除一本书 ...
随机推荐
- Nacos服务注册原理分析
在分布式服务中,原来的单体服务会被拆分成一个个微服务,服务注册实例到注册中心,服务消费者通过注册中心获取实例列表,直接请求调用服务. 服务是如何注册到注册中心,服务如果挂了,服务是如何检测?带着这些问 ...
- ASP.NET Core开发者指南(2022版路线图)
ASP.NET Core开发者指南 2022年 ASP.NET Core 开发者指南: 在下面,您可以看到一个图,说明可以采用的路径以及要成为ASP.NET Core开发人员所想要学习的库.我将此图作 ...
- JZOJ 2020.02.16【NOIP提高组】模拟A 组
2020.02.16[NOIP提高组]模拟A 组 呼呼呼呼呼呼呼呼 今天暴力分可真多啊 第一次 \(A\) 组进前 \(5\) ! 呼呼呼呼呼呼呼呼 总有人虐场,总有人在场中被虐······ 总结 3 ...
- JR文摘_TNFi和阿贝西普降低RA患者CVD风险
转自 Dr Jack Cush的Twitter (2020-08-19) JR文摘: 18754例RA患者前瞻性观察到1801次CVD事件,与csDMARDs相比, TNFi(HR: 0.82, 95 ...
- URL带参数json传递进行解析
注意参数格式是要加密的: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 【django-vue】封装logger 封装全局异常 封装response 数据库配置 用户表继承AbstractUser配置
目录 上节回顾 python运行流程 项目目录调整(重要) 关于环境变量的问题 今日内容 1 django后端配置之封装logger 2 后端配置之封装全局异常 补充说明 3 后端配置之二次封装res ...
- OpenLayers之OGC服务加载
一.实验内容 手动构造 GetCapabilities.GetMap 的操作链接,并在浏览器里发送HTTP 请求:利用 OpenLayers 进行 WMS 服务加载: 手动构造 GetCapabili ...
- 深入理解计算机系统(CSAPP)bomblab实验进阶之nuclearlab——详细题解
前言 本实验是难度高于bomblab的一个补充实验,该实验部分题目难度已经达到CTF入门水平,且这个实验据说是上一届的某个学长原创,因此互联网上几乎找不到类似的题目.在间断地思考了几周后我最终完成了所 ...
- C# WCF实现聊天室功能
1.WCF是什么 Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架 看这篇文章之前,可以先看我的另一篇文章,初步了解一下WCF: ...
- LeetCode-1001 网格照明
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/grid-illumination 题目描述 在大小为 n x n 的网格 grid 上,每个单元 ...