SpringBoot+ruoyi框架文件上传和下载的实现

 更新时间:2023年09月22日 16:20:46   作者:小小码农>>>>  
文件的上传和下载功能,是项目开发过程中比较常见的业务需求,本文主要介绍了SpringBoot+ruoyi框架文件上传和文件下载的实现,具有一定的参考价值,感兴趣的可以了解一下

第一次接触ruoyi框架,碰到文件上传和下载问题,今天来总结一下。使用若依框架文件上传下载首先配置文件路径要配好。

文件下载:

application.yml若依配置

# 项目相关配置
ruoyi:
  # 名称
  name: RuoYi
  # 版本
  version: 3.6.0
  # 版权年份
  copyrightYear: 2021
  # 实例演示开关
  demoEnabled: true
  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
 # profile: /home/admin2409/fn/uploadPath
  profile: D:/.code/uploadPath
  # 获取ip地址开关
  addressEnabled: false
  # 验证码类型 math 数组计算 char 字符验证
  captchaType: math

首先是文件下载,在若依框架下载上传文件工具已经写好了页面:

前端方法:`

// 通用下载方法
export function download(fileName) {
	window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
}

后端通用方法:

单独写一个下载啊文件的请求
@GetMapping("/downloadTemplate")
    public AjaxResult importTemplate() throws IOException {
        return AjaxResult.success("hnxTemplate.xlsx");
    }
/**
     * 通用下载请求
     *
     * @param fileName 文件名称
     * @param delete   是否删除
     */
    @GetMapping("common/download")
    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {
        try {
            if (!FileUtils.checkAllowDownload(fileName)) {
                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 " , fileName));
            }
            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
            String filePath = RuoYiConfig.getDownloadPath() + fileName; //注意这里的路径要和你下载的路径对应
            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            FileUtils.setAttachmentResponseHeader(response, realFileName);
            FileUtils.writeBytes(filePath, response.getOutputStream());
            if (delete) {
                FileUtils.deleteFile(filePath);
            }
        } catch (Exception e) {
            log.error("下载文件失败" , e);
        }
    }

RuoYiConfig.getDownloadPath()如果和你的路径不一样,改成一样的

 /**
     * 获取下载路径
     */
    public static String getDownloadPath() {
        return getProfile() + "/download/";
    }

这样就文件就可以下载了

文件上传:

application.yml同样的路径配置不变页面:

前端代码:

<el-form-item label="场景图片:" prop="sceneImgurl">
          <el-upload
            action=""
            ref="uploadImport"
            :http-request="httpRequest"
            list-type="picture-card"
            :limit="1"
            :file-list="fileList"
            accept=".jpg, .jpeg, .png, .gif"
            :auto-upload="false"
            :before-remove="removeImg"
            >
            <i class="el-icon-plus"></i>
          </el-upload>
        </el-form-item>
 httpRequest(param) {
      let params = new FormData();
      params.append('avatarfile', param.file); // 传文件
      uploadPlanImg(params).then(res => {
          if(res.code!==200) return
          this.form.sceneImgurl = res.imgUrl
        });	
    },

后端上传代码

 httpRequest(param) {
      let params = new FormData();
      params.append('avatarfile', param.file); // 传文件
      uploadPlanImg(params).then(res => {
          if(res.code!==200) return
          this.form.sceneImgurl = res.imgUrl
        });	
    },

String url= RuoYiConfig.getUploadPath();//配置自己的路径

    /**
     * 获取上传路径
     */
    public static String getUploadPath() {
        return getProfile() + "/upload";
    }

上传成功:

到此这篇关于SpringBoot+ruoyi框架图片上传和文件下载的实现的文章就介绍到这了,更多相关SpringBoot ruoy图片上传和下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Java如何利用线程池和Redis实现高效数据入库

    Java如何利用线程池和Redis实现高效数据入库

    文章介绍了如何利用线程池和Redis在高并发环境中实现高效的数据入库,通过将数据首先存储在Redis缓存中,然后利用线程池定期批量入库处理,确保系统的性能和稳定性,主要组件包括BatchDataStorageService、CacheService和RedisUtils等
    2025-02-02
  • SpringBoot+Flying Saucer+Thymeleaf实现PDF生成的完整指南

    SpringBoot+Flying Saucer+Thymeleaf实现PDF生成的完整指南

    在实际开发中,PDF生成是常见需求,本文将详细讲解如何基于 Spring Boot + Flying Saucer + Thymeleaf 实现 PDF 生成,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-01-01
  • java自己手动控制kafka的offset操作

    java自己手动控制kafka的offset操作

    这篇文章主要介绍了java自己手动控制kafka的offset操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot整合ZXing实现二维码和条形码的创建

    SpringBoot整合ZXing实现二维码和条形码的创建

    如今我们越来越多的东西需要用到二维码或者条形码,商品的条形码,付款的二维码等等,所以本文小编给大家介绍了SpringBoot整合ZXing实现二维码和条形码的创建,文章通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 深入理解java1.8之supplier

    深入理解java1.8之supplier

    这篇文章主要介绍了深入理解java1.8之supplier,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java中的原子类详解

    Java中的原子类详解

    这篇文章主要介绍了Java中的原子类详解,Java原子类是一种多线程编程中常用的工具,用于实现线程安全的操作,它们提供了一种原子性操作的机制,确保多个线程同时访问共享变量时的数据一致性,需要的朋友可以参考下
    2023-10-10
  • 如何解决Nacos服务下线报错问题

    如何解决Nacos服务下线报错问题

    这篇文章主要介绍了如何解决Nacos服务下线报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBoot中SpringSecurity安全框架的基本配置与使用方式

    SpringBoot中SpringSecurity安全框架的基本配置与使用方式

    Spring Security是Spring框架的安全性解决方案,提供了身份验证、授权、认证流程安全控制等全面安全功能,广泛应用于Java应用程序中
    2026-03-03
  • SpringBoot项目中JDK动态代理和CGLIB动态代理的使用详解

    SpringBoot项目中JDK动态代理和CGLIB动态代理的使用详解

    JDK动态代理和CGLIB动态代理都是SpringBoot中实现AOP的重要技术,JDK动态代理通过反射生成代理类,适用于目标类实现了接口的场景,性能较好,易用性高,但必须实现接口且不能代理final方法,CGLIB动态代理通过生成子类实现代理
    2025-03-03
  • 在lambda的foreach遍历中break退出操作(lambda foreach break)

    在lambda的foreach遍历中break退出操作(lambda foreach break)

    这篇文章主要介绍了在lambda的foreach遍历中break退出操作(lambda foreach break),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09

最新评论