目录

  • 使用工具
  • 使用说明
  • 使用maven的pom.xml文件
  • 环境搭建
  • 代码示例
    • SQL代码
    • java目录
      • Img.java
      • MyWebMvcConfigurerAdapter.java
      • FileController.java
      • ImgDao.java
      • imgServiceImpl.java
      • ImgService.java
      • App.java
    • resources目录
      • index.html
      • application.yml
    • test目录
      • AppTest.java
  • 效果展示

使用工具

IDEA2018.2 MySQL5.6 JDK1.8

使用说明

需要在数据库中创建一个数据库,无需创建数据库表
SpringDtataJpa自动生成数据表

使用maven的pom.xml文件

<?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.gitee.vvcat</groupId><artifactId>picture_upload</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>picture_upload</name><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><project.version>0.0.1-SNAPSHOT</project.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version></properties><dependencies><!--spring data jpa 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--单元测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- database --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 该模块需要启动web服务,需要该依赖--><!-- springBoot 的启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 引入thymeleaf的依赖包. --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

环境搭建


代码示例

SQL代码

CREATE DATABASE vvcat;
USE vvcat;
CREATE TABLE `img` (`id` int(11) NOT NULL AUTO_INCREMENT,`url` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

java目录

Img.java
package com.gitee.vvcat.bean;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/11/12 11:34* @Version 1.0**/
@Entity(name = "img")
public class Img {@Id@GeneratedValueprivate Integer id;private String url;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}
}
MyWebMvcConfigurerAdapter.java
package com.gitee.vvcat.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/11/12 11:32* @Version 1.0**/
@Configuration
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry){//指向外部目录registry.addResourceHandler("img//**").addResourceLocations("file:E:/img/");super.addResourceHandlers(registry);}
}
FileController.java
package com.gitee.vvcat.controller;import com.gitee.vvcat.bean.Img;
import com.gitee.vvcat.service.ImgService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/11/12 11:32* @Version 1.0**/
@Controller
public class FileController {@Autowiredprivate ImgService imgService;@Value("${com.vvcat}")//获取主机端口private String post;//获取本机ipprivate String host;//图片存放根路径private String rootPath = "E:";//图片存放根目录下的子目录private String sonPath = "/img/";//获取图片链接private String imgPath;private static final Logger logger = LoggerFactory.getLogger(FileController.class);@GetMapping("/")public String index(Model model,HttpServletRequest httpServletRequest){String imgPath = (String) httpServletRequest.getSession().getAttribute("imgPath");System.out.println("index:" + imgPath);model.addAttribute("imgPath",imgPath);return "index";}@RequestMapping(value = "upload")@ResponseBodypublic String upload(@RequestParam("test") MultipartFile file, HttpServletRequest httpServletRequest) {//返回上传的文件是否为空,即没有选择任何文件,或者所选文件没有内容。//防止上传空文件导致奔溃if (file.isEmpty()) {return "文件为空";}//获取本机IPtry {host = InetAddress.getLocalHost().getHostAddress();} catch (UnknownHostException e) {logger.error("get server host Exception e:", e);}// 获取文件名String fileName = file.getOriginalFilename();//logger.info("上传的文件名为:" + fileName);// 设置文件上传后的路径String filePath = rootPath + sonPath;logger.info("上传的文件路径" + filePath);logger.info("整个图片路径:" + host + ":" + post + sonPath + fileName);//创建文件路径File dest = new File(filePath + fileName);String imgPath = ("http://" + host + ":" + post + sonPath + fileName).toString();// 解决中文问题,liunx下中文路径,图片显示问题// fileName = UUID.randomUUID() + suffixName;// 检测是否存在目录if (!dest.getParentFile().exists()) {//假如文件不存在即重新创建新的文件已防止异常发生dest.getParentFile().mkdirs();}try {//transferTo(dest)方法将上传文件写到服务器上指定的文件file.transferTo(dest);//将链接保存到URL中Img imgTest = imgService.add(new Img(), imgPath);HttpSession session = httpServletRequest.getSession();//import javax.servlet.http.HttpSession;session.setAttribute("imgPath",imgPath);return "上传成功";} catch (Exception e) {return "上传失败";}}
}
ImgDao.java
package com.gitee.vvcat.repository;import com.gitee.vvcat.bean.Img;
import org.springframework.data.jpa.repository.JpaRepository;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/11/12 11:35* @Version 1.0**/
public interface ImgDao extends JpaRepository<Img,Integer> {}
imgServiceImpl.java
package com.gitee.vvcat.service.impl;import com.gitee.vvcat.bean.Img;
import com.gitee.vvcat.repository.ImgDao;
import com.gitee.vvcat.service.ImgService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/11/12 11:37* @Version 1.0**/
@Service
public class imgServiceImpl implements ImgService {@Autowiredprivate ImgDao imgDao;@Overridepublic Img add(Img img, String path) {img.setUrl(path);return imgDao.save(img);}
}
ImgService.java
package com.gitee.vvcat.service;import com.gitee.vvcat.bean.Img;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/11/12 11:36* @Version 1.0**/
public interface ImgService {/*** 添加图片地址* @param* @return*/Img add(Img img, String path);
}
App.java
package com.gitee.vvcat;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Hello world!**/
@SpringBootApplication
public class App
{public static void main( String[] args ){SpringApplication.run(App.class, args);}
}

resources目录

index.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"  >
<head><title>上传图片</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<div th:if="${imgPath != null}"><img th:src="${imgPath}">
</div>
<form action="/upload" method="POST" enctype="multipart/form-data">文件:<input type="file" name="test"/><input type="submit" value="上传"/>
</form></body>
</html>
application.yml
server:port: 8080spring:http:encoding:force: truecharset: UTF-8thymeleaf:cache: falsecheck-template-location: truecontent-type: text/html; charset=utf-8enabled: trueencoding: UTF-8prefix: classpath:/templates/suffix: .htmlmode: LEGACYHTML5datasource:url: jdbc:mysql://localhost:3306/vvcat?characterEncoding=utf-8&serverTimezone=GMT%2B8username: rootpassword: 123456jpa:hibernate:ddl-auto: updateshow-sql: truecom:vvcat: ${server.port}

test目录

AppTest.java
package com.gitee.vvcat;import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertTrue;import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;/*** Unit test for simple App.*/
@SpringBootTest
public class AppTest
{/*** Rigorous Test :-)*/@Testpublic void shouldAnswerWithTrue(){System.out.println("hello world");}
}

效果展示

  1. 首页
  2. 可点击选择文件进行文件上传
  3. 选择完成后点击上传
  4. 数据库已经插入图片保存路径
  5. 图片在硬盘中的存储位置

    6.在网页显示图片 再次 访问 localhost:8080端口 可显示图片
  6. 如果图片上传为空

SpringBoot整合springDataJpa实现图片上传和显示相关推荐

  1. springboot整合阿里云oss上传的方法示例

    这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...

  2. HTML5输入框里加图片代码,做了一个input上传加号框,图片上传后显示在框中,怎么让加号消失?...

    CSS代码: .div_imgall {border:1px solid blue;width:100px;height:100px;position:relative;} .input_flie { ...

  3. Vue+SpringBoot+OSS+element实现图片上传服务器+图片展示墙

    1.技术选型: (1)Vue(前端) (2)Element(上传图片组件) (3)SpringBoot(后端) (4)Mybatis(数据库操作) (3)OSS(阿里云存储服务器) 2.实现效果概述: ...

  4. SpringBoot 2.0 多图片上传加回显

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 本文来源:http://r6f.cn/crEY 这两天公司 ...

  5. nodejs+express整合kindEditor实现图片上传

    为什么80%的码农都做不了架构师?>>>    kindEditor官网上中提供了ASP,ASP.NET,JSP相关的整合应用,http://kindeditor.net/docs/ ...

  6. nodejs+express整合kindEditor实现图片上传 - 木子丰咪咕晶 - 开源中国

    kindEditor官网上中提供了ASP,ASP.NET,JSP相关的整合应用,http://kindeditor.net/docs/upload.html可以参照实现nodejs的整合,发现实用no ...

  7. java上传图片报404_如何解决SpringBoot集成百度UEditor图片上传后直接访问404

    SpringBoot项目上传图片一般是上传至远程服务器存储,开发过程中可能会上传至当前项目的某个静态目录中,此时就会遇到这个问题,文件在上传之后直接访问并不能被访问到,必须重新加载项目. 首先分析一下 ...

  8. springboot入门系列教程|第九篇:springboot实现图片上传与显示(附源码)

    前言## 上一篇我们介绍了springboot如何实现自定义拦截器配合注解使用,那么这篇我们将介绍springboot实现图片上传的功能. 目录## 文章目录 前言## 目录## 项目创建### 项目 ...

  9. ThinkPHP5整合LayUI编辑器图片上传

    2019独角兽企业重金招聘Python工程师标准>>> 一.创建上传方法 public function uploadimg(){$image = $_FILES['file'];$ ...

最新文章

  1. react前端开发_是的,React正在接管前端开发。 问题是为什么。
  2. matlab固定床反应器,合成气完全甲烷化固定床反应器数值模拟
  3. HIVE和HBASE区别
  4. 【BZOJ】1070: [SCOI2007]修车
  5. android html audio,html5 用audio的playbackRate属性控制播放速度在安卓手机不起作用?...
  6. QT 之 TCP/IP 服务器和客户端(一)
  7. 操作系统知识——互斥和死锁
  8. Django框架 from django.core.files.uploadedfile import InMemoryUploadedFile
  9. Java 并发编程CAS、volatile、synchronized原理详解
  10. 计算机考研高分扎堆学校如何处理,考研:名校400+扎堆,450+和数学满分频现,网友:这届太厉害了!...
  11. SQL Server 2005中专用管理员连接 (DAC) 使用技巧修改系统表的方法
  12. HIVE 1.1.0 启动时报错: Unsupported major.minor version 51.0
  13. 数据结构(三):非线性逻辑结构-树
  14. python版本的适配器模式(对象)
  15. Mac 自定义用户级别Applications, 安装应用到Dashboard
  16. 使用ceph-deploy 部署集群
  17. GAN网络的详细内容
  18. win10查看所有的wifi密码。
  19. 鸿蒙系统手机2020,2020年正式到来,国产手机系统最有希望的华为鸿蒙咋没消息了?...
  20. 解压缩的mysql_Windows 上解压缩版 MySQL 配置

热门文章

  1. UITextField与UITextView的区别
  2. C++中的位运算和|
  3. WPF 第一个创建的窗体会作为Application.Current.MainWindow
  4. Flume向HDFS写数据实例
  5. Ajax学习(6)---服务器端脚本和程序中用 JSON 进行响应和回复
  6. CISSP考前总复习
  7. JSP页面图片路径为中文时乱码解决办法
  8. PHP+jQuery+Ajax实现用户登录与退出
  9. HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good
  10. asp.net服务器控件与html服务器控件的区别