Springboot框架实现图片上传显示并保存地址到数据库

Easter79
• 阅读 719

1.在application.properties.xml中配置

# SpringBoot框架实现图片上传显示并保存地址到数据库#spring boot上传文件大小限制spring.http.multipart.max-file-size=200MBspring.http.multipart.max-request-size=200MB

2.创建物品实体类productModel

package com.lyancafe.material.model;/** * @author scy 2018/8/22 */public class ProductModel {    private Integer id;    private String image;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getImage() {        return image;    }    public void setImage(String image) {        this.image = image;    }    @Override    public String toString() {        return "ProductModel{" +                "id=" + id +                ", image='" + image + '\'' +                '}';    }}

3.创建ProductController

package com.lyancafe.material.controller;import com.lyancafe.material.bo.ProductService;import com.lyancafe.material.model.ProductModel;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOException;import java.util.List;import java.util.UUID;/** * @author scy 2018/8/22 */@Controller@RequestMapping("product")public class ProductController {    @Autowired    private ProductService productService;    @RequestMapping("list")    public String list(Model model) {        List<ProductModel> productList = productService.list();        model.addAttribute("productList", productList);        return "list";    }    @RequestMapping("index")    public String index() {        return "index";    }    @RequestMapping("addProduct")    public String fileUpload(MultipartFile file, ProductModel productModel) throws IOException {        /**         * 上传图片         */        //图片上传成功后,将图片的地址写到数据库        //保存图片的路径(这是存在我项目中的images下了,你们可以设置路径)        String filePath = "F:\\test_myself\\suncystudy\\lyancafe-material\\material\\src\\main\\webapp\\images";        //获取原始图片的拓展名        String originalFilename = file.getOriginalFilename();        //新的文件名字        String newFileName = UUID.randomUUID() + originalFilename;        //封装上传文件位置的全路径        File targetFile = new File(filePath, newFileName);        //把本地文件上传到封装上传文件位置的全路径        file.transferTo(targetFile);        productModel.setImage(newFileName);        /**         * 保存商品         */        productService.save(productModel);        return "redirect:/product/list";    }}

4.创建接口ProductService

package com.lyancafe.material.service;import com.lyancafe.material.model.ProductModel;import java.util.List;/** * @author scy 2018/8/22 */public interface ProductService {    /**     *查询商品     *@return     */    List<ProductModel> list();    /**     *保存商品     * @param productModel     */    void save(ProductModel productModel);}

5.创建实现类ProductServiceImpl

package com.lyancafe.material.service;import com.lyancafe.material.dao.ProductDao;import com.lyancafe.material.model.ProductModel;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;/** * @author scy 2018/8/22 */@Servicepublic class ProductServiceImpl implements ProductService {    @Autowired    private ProductDao productDao;    @Override    public List<ProductModel> list() {        return productDao.list();    }    @Override    public void save(ProductModel productModel) {        productDao.save(productModel);    }}

6.创建ProductDao接口

package com.lyancafe.material.dao;import com.lyancafe.material.model.ProductModel;import java.util.List;/** * @author scy 2018/8/22 */public interface ProductDao {    /**     *查询商品     *@return     */    List<ProductModel> list();    /**     *保存商品     * @param productModel     */    void save(ProductModel productModel);}

7.创建ProductDao.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.lyancafe.material.dao.ProductDao">    <!--查询所有-->    <select id="list" resultType="com.lyancafe.material.model.ProductModel">        SELECT * FROM product    </select>    <!--保存所有-->    <insert id="save" parameterType="com.lyancafe.material.dao.ProductDao">        INSERT INTO product(image) VALUES (#{image})    </insert></mapper>

8.首页index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html lang="en"><head>    <base href="<%=basePath%>>">    <meta charset="UTF-8">    <title>Title</title></head><body><form action="<%=path%>product/addProduct" method="post" enctype="multipart/form-data">    图片:<input type="file" name="file">    <input type="submit" value="提交"></form></body></html>

9.显示列表list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html lang="en"><head>    <base href="<%=basePath%>>">    <meta charset="UTF-8">    <title>查询商品</title>    <link rel="stylesheet" type="text/css" href="<%=path%>css/allUser.css">    <script src="<%=path%>js/allUser.js"></script>    <style type="text/css">        #images {            width: 100px;            height: 100px;        }    </style></head><body><div id="login_frame">    <p id="image_logo"><img src="<%=path%>images/lyancafe.png"></p>    <table border="1">        <tbody>        <tr>            <th>序号</th>            <th>图片</th>        </tr>        <c:if test="${empty productList}">            <li>暂无商品</li>        </c:if>        <c:if test="${!empty productList}">            <c:forEach items="${productList}" var="product">                <tr>                    <th>${product.id}</th>                    <th>                        <c:if test="${product.image !=null }">                            <img id="images" alt="" src="<%=path%>images/${product.image }">                        </c:if>                    </th>                </tr>            </c:forEach>        </c:if>        </tbody>    </table></div></body></html>

10.访问路径:http://localhost:8080/product/index

上传成功后:

Springboot框架实现图片上传显示并保存地址到数据库

解决不了的可以咨询,如果恢复不及时加qq:501397578

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k