同学,你要的SpringBoot多图片上传回显功能已经实现了,赶紧收藏吃灰~

SpringBoot 2.0 多图片上传加回显 SpringBoot 2.0 多图片上传加回显 这两天公司有需求让做一个商户注册的后台功能,其中需要商户上传多张图片并回显。由于之前没做过这方面的东西,此篇文章用以记录一些知识点,以便后续查看。 上传 Controller的代码非常简单,由于用了SpringMVC框架,所以直接用MultipartFile来接即可。由于是多图片上传所以用数组来接。此处应该注意参数名应该和<input>中... 阅读详情

这两天公司有需求让做一个商户注册的后台功能,其中需要商户上传多张图片并回显。由于之前没做过这方面的东西,此篇文章用以记录一些知识点,以便后续查看。

上传

Controller的代码非常简单,由于用了SpringMVC框架,所以直接用MultipartFile来接即可。由于是多图片上传所以用数组来接。此处应该注意参数名应该和<input>中的name值相对应

@RequestMapping("/pic")
@ResponseBody
public ResponseEntity<String> pic(MultipartFile [] pictures) throws Exception {
    ResponseEntity<String> responseEntity = new ResponseEntity<>();
    long count = Arrays.asList(pictures).stream().
            map(MultipartFile::getOriginalFilename).
            filter(String::isEmpty).count();
    if (count == pictures.length){
        responseEntity.setCode(ResponseEntity.ERROR);
        throw new NullOrEmptyException("图片不能同时为空");
    }
    responseEntity.setCode(ResponseEntity.OK);
    responseEntity.setMessage("上传成功");
    return responseEntity;
}

前端页面的代码,此处的name值和Controller的参数名称是对应的

<div class="container">
    <div class="avatar-upload">
        <div class="avatar-edit">
            <input type='file' name="pictures" id="imageOne" accept=".png, .jpg, .jpeg"/>
            <label for="imageOne"></label>
        </div>
        <div class="avatar-preview">
            <div id="imageOnePreview"
                 style="background-image: url(http://ww3.sinaimg.cn/large/006tNc79ly1g556ca7ovqj30ak09mta2.jpg);">
            </div>
        </div>
    </div>
</div>

js代码回显

function readURLOne(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function(e) {
            $('#imageOnePreview').css('background-image', 'url('+e.target.result +')');
            $('#imageOnePreview').hide();
            $('#imageOnePreview').fadeIn(650);
        }
        reader.readAsDataURL(input.files[0]);
    }
}
$("#imageOne").change(function() {
    readURLOne(this);
});

js代码上传

function getUpload(){
    //获取form表单中所有属性  key为name值
    var formData = new FormData($("#picForm")[0]);
    $.ajax({
        url: '/pic',
        type: 'POST',
        dataType:"json",
        data: formData,
        processData: false,
        contentType: false,
        success:(function(data) {
            window.confirm(data.message);
            window.location.reload();
        }),
        error:(function(res) {
            alert("失败");
        })
    });
}

效果展示

初始页面如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fGBiLI4b-1628824327737)(//upload-images.jianshu.io/upload_images/13146186-5bf127a52c4938b3.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/1190/format/webp)]

上传完图片以后回显为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QeXQakPx-1628824327739)(//upload-images.jianshu.io/upload_images/13146186-fe557fc3c53e6afa.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)]

点击提交以后可将图片上传至后台

配置上传图片的属性

默认情况下只允许上传1MB以下的图片,如果要设置上传图片大小。那么需要在配置文件中如下配置

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 20MB
      max-request-size: 20MB

关于文件的配置有下面几个

spring.servlet.multipart.enabled=true # 是否支持多文件上传
spring.servlet.multipart.file-size-threshold=0B # 文件写入磁盘的阈值
spring.servlet.multipart.location= # 上传文件的保存地址
spring.servlet.multipart.max-file-size=1MB # 上传文件的最大值
spring.servlet.multipart.max-request-size=10MB # 请求的最大值
spring.servlet.multipart.resolve-lazily=false # 是否在文件或参数访问时延迟解析多部分请求

异常处理

异常处理用了Springboot提供的全局异常处理机制。只需要在类上加入@ControllerAdvice注解即可。在方法上加入@ExceptionHandler(想要拦截的异常类)就能拦截所有Controller的异常了。如果想要拦截指定为特定的Controller只需要在@ControllerAdvice(basePackageClasses=想要拦截的Controller)

@ControllerAdvice
@Slf4j
public class CommonExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(NullOrEmptyException.class)
    @ResponseBody
    public ResponseEntity<String> nullOrEmptyExceptionHandler(HttpServletRequest request, NullOrEmptyException exception){
        log.info("nullOrEmptyExceptionHandler");
        return handleErrorInfo(request, exception.getMessage());
    }

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ResponseEntity<String> defaultErrorHandler(HttpServletRequest request, Exception exception){
        log.info("defaultErrorHandler");
        return handleErrorInfo(request, exception.getMessage());
    }

    private ResponseEntity<String> handleErrorInfo(HttpServletRequest request, String message) {
        ResponseEntity<String> responseEntity = new ResponseEntity<>();
        responseEntity.setMessage(message);
        responseEntity.setCode(ResponseEntity.ERROR);
        responseEntity.setData(message);
        responseEntity.setUrl(request.getRequestURL().toString());
        return responseEntity;
    }
}

遇到的坑

  • 如果返回值是模板文件的文件名,那么无论是类上还是方法上都不能加@ResponseBody注解,因为如果加了的话会被解析成Json串返回。

  • 注意前端所传参数名和后端接收参数名一一对应。不然会报405错误

  • 使用IDEA开发如果使用了lombok那么需要在Annotation Processors中将Enable annotation processing打对勾

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iges4v7w-1628824327754)(//upload-images.jianshu.io/upload_images/13146186-642a3faf971bba82.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)]

SpringBoot实现图片文件上传和回显的两种方式 实现图片的上传和回显功能其实在业务中是非常常见的,比如需要上传头像,或者交易平台需要上传物品的图片等等,都需要上传和回显,所以我接下来给大家介绍两种实现照片上传和回显的方式,一种是上传本地,一种是上传OSS。 阅读详情

相关推荐

ANSYS Help USER300

USER 300概述单元描述输入数据假设与限制条件 概述 单元描述 Mechanical APDL提供了一种方便的方法来创建自定义的单元,命名为USER300,可以创建几乎任何单元类型。 UserElem子程序为Mechanical APDL在单元类型创建上提供了一个接口,可传递用户自定义单元创建时所需的所有数据,然后从自定义单元返回所有数据和结果,以更新数据库和文件。因为通过接口可以访问数据库和文件信息,所以很少需要了解Mechanical APDL数据库程序和文件结构。该接口还提供了获取Mechanic

weixin_47019765的博客 2235

SpringBoot上传图片(多图片上传)

代码 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ...

取名为猫的狗的博客 1万+

AI Olympics:面向真实决策的不完全信息博弈评测框架

在人工智能落地实践中,传统基准测试(如MMLU、GSM8K)擅长评估知识调用与静态推理能力,却难以衡量模型在动态、模糊、高代价的真实场景中的策略决策水平。AI Olympics正是为弥补这一断层而生——它以扑克、狼人杀等社会性博弈为载体,系统考察模型在不完全信息下的对手建模、欺骗检测、多步序贯推理与代价敏感执行等核心能力。其技术价值在于将‘黑箱决策’转化为可追踪、可归因、可压力测试的动态思维图谱(DTG),支撑金融风控、智能客服、交通调度等强交互业务场景的能力诊断与持续优化。

weixin_30983965的博客 298

Springboot实现多张图片上传的功能

Springboot实现多张图片上传的功能

m0_56851949的博客 1287

【前端】【面试】【业务场景】前端如何获取并生成设备唯一标识

问题:前端如何获取并生成设备唯一标识?核心要点:浏览器原生信息有限,但通过组合多个维度可生成设备指纹(Device Fingerprint),用于唯一标识设备。常见方式浏览器信息(User-Agent)屏幕与系统参数本地存储标识(localStorage / cookie)第三方指纹库(如 FingerprintJS)方式优点缺点手动组合指纹实现简单不稳定,识别率低持久化强容易被用户清除识别率高、稳定性好依赖第三方库IP 地址识别网络识别粗略共享网络环境下重复可能大。

qq_59344127的博客 1796

初学树莓派——(九)DHT11数据传入ONENET

目录 前言 DHT11实现本地温湿度监测 DHT11.py 接线图 效果图 温湿度数据上传至ONENET 新建产品 新建设备 ONENET.py 测试 Shell脚本配置 效果图 前言 本文分部分实现温湿度上传至OneNet云平台,本地数据监测,数据上传 新建一个文件夹,文件夹内包含DHT11.py、ONENET.py、tmp_data.txt、hum_data.txt DHT11实现本地温湿度监测 DHT11.py import RPi.GPIO as GPIO

会点灯的大力水手的博客 2612

SpringBoot+Vue多图片上传和展示(一)

在Web开发中,图片上传和展示是必不可少的功能之一。本文将介绍如何使用Spring Boot、Vue.js和ElementUI创建一个简单的图片上传和展示网站。

无所谓^_^博客 5865

Python在Windows环境下驱动乐视三合一摄像头的深度图像处理实践

本文详细介绍了在Windows系统下,使用Python驱动乐视三合一摄像头进行深度图像处理的完整实践流程。从环境配置、驱动安装、OpenNI与OpenCV库的部署,到深度与彩色数据流的读取、可视化、三维点云转换以及背景移除等应用开发,为开发者提供了从零开始掌握深度摄像头编程的实战指南。

gitlab7runner的博客 233

Springboot上传图片和回显示图片

本次演示的是直接使用Springboot上传到服务器而不是七牛云等oss,springboot对于前端传输的文件数据类型格式的封装为MultipartFile,前端上传的图片是被存在服务端的缓存区的,当controller处理的时候,缓存区就被清空,所以需要转存,使用transferTo Api。先对源文件名的后缀做一个截取,保证格式不变,然后对文件名采用uuid加时间搓保证唯一性,在使用对响应体写数据的方式完成回显。前端采用elementui 直接上传图片。发送的内容image/jpeg等格式。

qq_55272229的博客 1400

Excel转LaTeX表格神器:excel2latex.xla插件使用全攻略(含下载链接与配置教程)

本文详细介绍了Excel转LaTeX表格神器excel2latex.xla插件的完整使用攻略。从下载安装、基础转换到高级配置,深入讲解了如何利用该插件高效生成LaTeX代码,特别针对IEEE双栏等复杂排版需求提供了专业解决方案,帮助用户彻底告别手动编码,提升学术与专业文档的排版效率。

app77的博客 295

【论文精读】Latent Diffusion

Latent Diffusion

weixin_44934783的博客 4478

springboot MultipartFile 多图片上传

实现一个简单的多张图片上传。使用MultipartFile。 关于MultipartFile的配置 # 是否支持多文件上传 spring.servlet.multipart.enabled=true # 文件写入磁盘的阈值 spring.servlet.multipart.file-size-threshold=0B # 上传文件的保存地址 spring.servlet.multipart.location= # 上传文件的最大值 spring.servlet.multipart.max-file-size

weixin_44509349的博客 3593

对角两对双差速轮AGV的平移、直行、转弯和原地旋转之PID控制

本示例将展示如何使用PID控制算法,控制具有对角线布置的两对双差速轮(左前和右后)的AGV,实现平移、直行、转弯和原地旋转等运动。通过对车辆的运动学和PID控制器的设计,我们可以精确地控制AGV的运动

xiaoc100200的博客 1512

SpringBoot简单优雅实现图片上传功能(超详细)

最近有一个需求需要实现图片上传,因此,本人找到了一个可以快速实现该功能的插件mini-upload-form。在此记录分享一下使用过程。mini-upload-form的Github跳转将程序从github拉下后,前端页面index.html可简单修改后直接使用,我们的精力主要放在后端实现。MultipartFile是SpringMVC提供简化上传操作的工具类。

BBX__XB的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【SpringBoot】简单的文件上传和文件下载以及图片回显

简单的文件上传和文件下载以及图片回显

weixin_60387745的博客 4930

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Springboot怎么实现图片上传

label class="col-sm-2 control-label">图片</label>-- imgfile 是上传图片的参数 类型是 MultipartFile 文件类型imgfile 必须和后台 上传图片的方法 uploadImg 参数保持一致 --></div></div>js中定义函数 图片上传<script>//上传图片//初始化图片配置:],//是否初始化图片显示language: 'zh', //设置语言。

weixin_62883794的博客 5191

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Springboot】批量图片上传 从HttpServletRequest到List<MultipartFile>

本文实现批量图片上传,环境为:JDK11Maven 3.5。

锥栗的博客 3612

Spring Boot 实现多图片上传并回显,涨姿势了~

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典Java核心知识整理Java核心知识Spring全家桶(实战系列)其他电子书资料Step3:刷题既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。以下是我私藏的面试题库:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

2401_84046895的博客 1126

SpringBoot 2.0 图片上传(支持批量上传)

SpringBoot 2.0提供了很多开箱即用的功能,这使得我们开发也更加的简单。 下面是一个图片上传的Demo(包含前端代码与后端的代码) Web端代码,支持批量上传 <html> <head> <meta http-equiv="Content-Type" conte...

测试0901-1 2077

第十一章:实现SpringBoot单个、多个文件的上传

在企业级项目开发过程中,上传文件是最常用到的功能。SpringBoot集成了SpringMVC,当然上传文件的方式跟SpringMVC没有什么出入。下面我们来创建一个SpringBoot项目完成单个、多个文件的上传。

xs90xs的博客 3287

uniapp+springBoot多图片上传

uniapp和springBoot多文件上传

blueSatchel的博客 1246

如何在SpringBoot当中上传多个图片或者上传单个图片 工具类

如何在SpringBoot当中上传多个图片【上传多个图片 】 附赠工具类 1.SpringBoot 上传图片工具类 1 public class SpringUploadUtil { 2 3 4 /*** 5 * 上传图片后返回文件名称用于存储数据库 6 * @author MRC 7 ...

adu521525的博客 778

Springboot 上传多张图片到腾讯云(单张)

tencent.cos.file.bucketname=你的桶名字。tencent.cos.file.secretkey=你的key。tencent.cos.file.secretid=你的id。tencent.cos.file.region=你的地址。public static String 你的key;public static String 你的桶名字;public static String 你的地址;你的桶名字 = bucketName;你的key = secretKey;

m0_71887242的博客 265

关于SpringBoot项目上传图片回显功能在linux系统无法回显做出详细解答

前段上传图片,后端接收到图片,需要转存到一个目录中,因为file是一个临时文件,需要转存到指定位置保存,否则本次请求完成后临时文件会删除。项目在win10系统下正常运行,图片上传回显图片,修改页面也会回显图片,但是到linux系统中,就无法上传图片,无法回显。并且需要把usr目录和images目录权限都给成777。项目在win10系统正常运行,上传图片回显图片,如下图。项目部署到linux中,就无法显示图片,如下图。所以路径要换成linux下的路径。

caijigskg的博客 943
上一篇: MySQL又死锁了,我不顶上,就得我背锅!
下一篇: 为什么MySQL不推荐使用uuid或者雪花id作为主键?
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值