使用若依框架的springboot项目中的上传功能

基于若依框架(RuoYi-master)实现的的文件上传功能 官网文档 注:在开发时,发现官方文档【上传下载】功能编写的不太准确,因而在此写篇文章以防日后以及看到的小伙伴们踩坑 具体步骤如下: 1、首先创建一张上传文件的表,例如: drop table if exists sys_file_info; create table sys_file_info ( file_id int(11) not null auto_increment comment '文件id', file_name var 阅读详情

上传功能

在自己写的借助于“若依”框架的springboot项目中,写上传下载功能,想记录一下,所以有了此篇文章。

1. 配置文件filePath.properties

##文件上传路径

// 定义文件上传路径 D:\\ 此为路径,可根据自己需求修改
file.fileUploadPath=D:\\AA\\bankCardService

2. 实体类

##定义上传FileUploadProp实体类

package com.cn.web.prop;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "file")
@PropertySource(value = "filePath.properties")
public class FileUploadProp {

	private String fileUploadPath;

	public String getFileUploadPath() {
		return fileUploadPath;
	}

	public void setFileUploadPath(String fileUploadPath) {
		this.fileUploadPath = fileUploadPath;
	}

}

3. 前端写法

##文件上传前端界面upload.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"><head>
    <th:block th:include="include :: header('【请填写功能名称】列表')" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-appendix-add" enctype="multipart/form-data">
            <input type="hidden" name="appendixRelevanceid" id="appendixRelevanceid" class="form-control" th:value="${arId}">
            <div class="form-group">
                <label class="col-sm-3 control-label">文件:</label>
                <div class="col-sm-8">
                    <input name="file" id="file" class="form-control" type="file">
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-3 control-label">说明:</label>
                <div class="col-sm-8">
                    <input type="text" name="appendixRemark" id="appendixRemark" class="form-control">
                </div>
            </div>
        </form>
    </div>
    <th:block th:include="include :: footer" />
    <script th:inline="javascript">
        const prefix = ctx + "web/targetAppendix";
        function submitHandler() {
            uploadFile();
        }

        //上传方法
        function uploadFile(){
            // debugger;
            var formData = new FormData();
            if ($('#file')[0].files[0] == null) {
                $.modal.alertWarning("请先选择文件");
                return false;
            }
            //参数
            formData.append('appendixRelevanceid', $("#appendixRelevanceid").val());
            formData.append('appendixRemark', $("#appendixRemark").val());
            //文件
            formData.append('file', $('#file')[0].files[0]);

            //上传
            $.ajax({
                url: prefix + "/addAppendix",
                type: 'post',
                cache: false,
                data: formData,
                processData: false,
                contentType: false,
                dataType: "json",
                success: function(result) {
                    $.operate.successCallback(result);
                }
            });
        }
    </script>
</body>
</html>

3. 后端上传写法

xxController.java

// 文件上传保存
@PostMapping("/addAppendix")
    @ResponseBody
    public AjaxResult addAppendix(@RequestParam("file") MultipartFile file, TargetAppendix targetAppendix) {

        System.out.println("资源查看附件"+fileUploadProp.getFileUploadPath());
        if(file == null){
            return AjaxResult.error("文件不允许为空");
        }
        //文件名
        String fileName = file.getOriginalFilename();
        //文件后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf(".")+1);
        //新文件名
        String newFileName = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
        //拿到路径
        String realPath = fileUploadProp.getFileUploadPath();
        //文件夹不存在的时候创建一个
        File dir = new File(realPath);
        if(!dir.exists()){
            dir.mkdirs();
        }

        String transFerName = newFileName+"."+suffixName;
        //创建file对象,新地址新名字
        File newFile = new File(realPath, transFerName);
        try {
            file.transferTo(newFile);
        } catch (IOException e) {
            e.printStackTrace();
            return AjaxResult.error("文件上传失败");
        }

        String id = TargetUtils.getUUID();
        targetAppendix.setId(id);
        targetAppendix.setAppendixName(fileName);
        targetAppendix.setAppendixHidename(transFerName);
        targetAppendix.setAppendixUrl(realPath+"\\"+transFerName);
        //获取当前登陆人
        SysUser sysUser = ShiroUtils.getSysUser();
        targetAppendix.setCreateId(String.valueOf(sysUser.getUserId()));
        targetAppendix.setCreateBy(sysUser.getLoginName());
        targetAppendix.setCreateTime(TargetUtils.getDate());
        return toAjax(targetAppendixService.insertTargetAppendix(targetAppendix));
    }

在这里插入图片描述
希望对您有所帮助!

若依的多图片上传/回显/保存多图片路径url逗号隔开存数据库,前后端都有,拷贝即用 总结:大家的业务细节可能不同,实现方法也有多种,如果使用若依框架,本身就已经封装了很多方法,多用其封装好的方法是最方便的,2.上传方法,重中之重,参数和返回值自己要明确自己要什么,再根据实际情况修改逻辑,方法走不通多添加log 前台打印找问题。这篇文章涵盖前后端,大家仅需对业务细节进行修改即可,本身图片上传也是个公用功能,所以大多数情况下直接拷贝即可用。4.浏览/回显方法,添加过滤,防止出现错误url导致出现"加载失败"的走马灯图片。后端controller,因为我返回的是绝对路径,若依有获取路径的方法. 阅读详情

相关推荐

SpringBoot结合web uploader实现图片上传

一、 下载web uploaer框架所需要的css,js文件,去官网fex.baidu.com/webuploader/下载就可以 二、 将下载到的css,js等文件放入到项目中相应的文件夹 三、 用webuploader上传图片时,附带自定义参数的问题: 有两种方法: 1、 通过formData来附带自定义参数,不过这种方式不太友好,自定义参数只能是提前写死的,不能动态变化。 ...

jinjidexiaocainiao的博客 1482

4.若依框架上传文件

若依框架上传文件。

qq_27860623的博客 4559

SpringBoot系列之基于Jersey实现文件上传API

JAX-RS:JAX-RS是可以用可以用于实现RESTFul应用程序的JAVA API,给开发者提供了一系列的RESTFul注解。Jersey:是基于JAX-RX API的实现框架,用于实现RESTful Web 服务的开源框架。

Nicky's blog 1303

若依分离版的文件上传

若依:文件上传:示例:通过若依自带的文件上传的接口实现文件上传的步骤。

lhx666zhen6的博客 5340

多文件上传和展示

bootstrap-fileinput-master多文件上传,多文件预览,网页的代码地址为https://mp.youkuaiyun.com/postedit/84098479

保姆级教程:用YOLOv5s搞定钢材表面缺陷检测,从数据集NEU-DET到模型部署全流程

本文提供了一份详细的YOLOv5s钢材表面缺陷检测教程,涵盖从NEU-DET数据集处理到模型部署的全流程。针对工业环境中的实际限制,如计算资源有限和标注样本少等问题,提供了优化方案和实用技巧,帮助开发者快速实现高效的钢材缺陷检测系统。

weixin_30568591的博客 465

vue3+springboot+minio,实现文件上传功能

通过Vue 3前端选择文件并上传到后端Spring Boot,然后存储到MinIO中了。

exlink2012的专栏 1855

sklearn2pmml xgboost缺失值(missing)处理的坑

sklearn2pmml xgboost缺失值(missing)如何处理 今天同事在部署xgboost pmml模型时遇到了大坑,线上spark预测和本地python预测结果怎么都不对应,记录一下处理过程。 看了下同事的代码,貌似也没有问题 from sklearn2pmml import PMMLPipeline from sklearn2pmml import sklearn2pmml fro...

Skycrab 8969

SpringBoot上传文件至项目路径下

package com.lianxi.demo85.controller; import com.lianxi.demo85.Utils.UploadUtils; import io.swagger.annotations.Api; import org.springframework.stereotype.Controller; import org.springframework.web.bi...

weixin_40944832的博客 7183

Kinect V1结构光激光散斑原理及样式

   对 intel realsense F200 和 Kinect V1的coding pattern原理进行调研,知二者都使用light coding的方式,该方法与传统的coded structure light不同:传统编码结构光(空间编码,时间编码)最终使用的是三角测量的原理计算深度信息;light coding通过投射具有高度伪随机性的激光散斑,会随着不同距离变换不同

松间明月 1万+

基于HPM5E00的EtherCAT从站开发实战:从硬件解析到软件调试

实时工业以太网通信是工业自动化与运动控制领域的核心技术,它通过硬件与协议栈的协同,实现了微秒级的高确定性数据交换。其技术价值在于为多轴同步、机器人控制等复杂场景提供了高实时性、高同步精度的通信基础。在应用场景上,广泛服务于数控机床、包装机械、半导体设备等高端制造领域。本文聚焦于EtherCAT从站开发,深入解析了基于先楫HPM5E00高性能MCU与专用从站控制器(ESC)的硬件架构设计,并详细阐述了开源协议栈SOES的移植、对象字典配置以及过程数据(PDO)映射等核心软件实践,为开发者快速构建稳定可靠的实时

weixin_30915951的博客 501

【项目笔记】后端框架的搭建用法以及一些常用功能的实现,使用Springboot+mybatis-plus等技术

此项目使用的是VUE+ELEMENTUI以及Springboot+mybatis-plus的技术进行的开发,基于IDEA软件。此笔记只记录了后端的开发,故此篇文章暂时只用到了Springboot+mybatis-plus的技术。

努力敲代码的小盆友 1644

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5中间件的完整流程,包括环境准备、依赖调整、Web.xml版本适配、部署配置优化及常见问题解决方案。特别针对信创改造需求,提供了排除Tomcat依赖、处理BES专用starter等实用技巧,帮助开发者顺利完成国产中间件迁移。

weixin_30825581的博客 1100

使用SpringBoot+MyBatis+MySQL实现图片上传

一、技术参数: SpringBoot 1.15.6.RELEASE MyBatis-SpringBoot 1.3.2 MySQL 5.1.30 数据库连接池:druid Maven 3.5.9 项目pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.or...

zcczero的博客 2572

102、栅极驱动芯片选型与设计

文章摘要 本文分享了栅极驱动芯片选型与设计的实战经验。通过一次因驱动芯片选型不当导致的炸管事故,作者总结了栅极驱动芯片选型的五个关键参数:峰值驱动电流、驱动电压范围、传播延迟匹配、欠压锁定和隔离等级。文章详细分析了自举电路设计中的常见陷阱,以及栅极电阻对开关特性的影响,并强调了PCB布局布线的重要性。最后,作者提供了七条实用建议,包括避免通用型驱动芯片、关注CMTI参数、使用插件电阻等。核心观点是:栅极驱动设计需要综合考虑参数匹配、电路布局和实际调试,示波器实测波形是验证设计的唯一标准。

2401_88858637的博客 44

华为OD机试双机位C卷:打印机队列 (C++/Py/C/Java/Js/Go)

华为OD机试双机位C卷 打印机队列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 打印机队列。

qq_45776114的博客 1793

【五一创作】基于springboot框架的电脑商城项目(三)

2.在主类中定义一个方法,方法名无所谓,但方法需要用@bean修饰,表示该方法返回值是一个bean对象,并且该bean对象被bean修饰,也就是这个方法返回了一个对象,然后把该对象交给bean管理,类似spring中的bean标签,含义是一样的,只是这里改为了注解。业务层有两个功能模块,对应的是两个抽象方法的设计,并且这两个功能都涉及到用户是否存在的查询操作,所以需要在业务层设计根据用户uid查询数据的方法(持久层已经设计过该方法,但是没有在业务层实现该方法的调用)

m0_59230408的博客 2万+

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

m0_51579041的博客 1万+

SpringBoot +Layui 的文件上传

SpringBoot+Layui的文件上传 在做新项目的时候,因为这次的项目前台用的是LayUi框架,所以这次写一个用layUi做的文件上传。 1.先看layUi官网 https://www.layui.com/ 其实这个官网前台的已经写的很完整了,点击示例这里的文件上传 然后查看代码 这里我用了这里的其中的一个方法,结果为如图所示 前台代码如下 <%@ page language="java" import="java.util.*" pageEncoding="u

SSbandianH的博客 851

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

使用SPRINGBOOT优雅的实现文件上传

我们主要是做政府项目,客户也都是政府单位的,对用户体验要求比较高,要让他们感觉用的方便,对稳定性要求比较高,基本上一年365天都不希望你出问题,对安全性要求也比较高,涉密了,信创国产化,不能连外网的,都是内网。之前一般的做法都是使用HTML5来做的,大部都是传文件的,传文件夹的不多。网上搜到的SpringBoot的代码不多,完整的不多,能用的也不多,基本上大部分的文章只是提供了少量的代码,讲一下思路,或者实现方案。最好下载能够支持加密下载,在下载过程中数据是加密的,下载完后自动解密,主要是有安全需求。

alisky119的博客 580

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java实现文件夹上传功能实例代码(SpringBoot框架)

java实现文件夹上传功能实例代码(SpringBoot框架),SpringBoot实现文件夹上传功能实例代码,SpringBoot实现文件夹上传实例,SpringBoot文件夹上传解决方案,SpringBoot文件夹上传思路,SpringBoot文件夹上传源码,SpringBoot文件夹上传,SpringBoot大文件上传,SpringBoot大文件分块上传,SpringBoot大文件加密上传,之前一般的做法都是使用HTML5来做的,大部都是传文件的,传文件夹的不多。3.自动下载maven依赖。

weixin_45525177的博客 623

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

前后端分离跨服务器文件上传,SpringBoot+Vue.js实现前后端分离的文件上传功能

这篇文章需要一定vue和springboot的知识,分为两个项目,一个是前端vue项目,一个是后端springboot项目。后端项目搭建我使用的是springboot1.5.10+jdk8+idea 使用idea新建一个springboot项目,一直点next即可项目创建成功后,maven的pom配置如下?接下来编写上传的api接口?crossorigin注解:解决跨域问题,因为前后端完全分离,跨...

weixin_28719225的博客 613

SPRINGBOOT+VUE实现多文件上传

操作系统比较多,终端系统不统一,研发部门的同事用Windows,macOS多一些,后端运维同事用Linux多一些,主要就是centos和ubuntu,客户那边政府部门用信创国产化的多一些,有中标麒麟,银河麒麟,统信UOS,龙芯,华为鲲鹏。我们主要是做政府项目,客户也都是政府单位的,对用户体验要求比较高,要让他们感觉用的方便,对稳定性要求比较高,基本上一年365天都不希望你出问题,对安全性要求也比较高,涉密了,信创国产化,不能连外网的,都是内网。合作过程中也可能出现新的需求,或者二次开发,或者定制开发需求。

alisky119的博客 619

springboot框架入门

????一. springboot简介1.什么是Spring Boot?2.Spring Boot 在应用中的角色二、使用 idea 快速搭建 Spring Boot 一. springboot简介 1.什么是Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。 设计

haobo__的博客 460

SpringBoot支持的分片上传技术详解?

支持离线保存文件进度,在关闭浏览器,刷新浏览器后进行不丢失,仍然能够继续上传。

weixin_52050572的博客 593

基于SpringBoot实现简单图片上传

一、SpringBoot        Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 二、SpringBoot启动原理        SpringBoot整个启动流程分为两个步骤:    &

北京麟卓 3860
下一篇: 文件下载
bob_bob1
博客等级 码龄7年 0粉丝 4原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值