1. package com.example.demo.document;
  2. import cn.hutool.core.io.FileUtil;
  3. import cn.hutool.core.io.IoUtil;
  4. import cn.hutool.core.util.IdUtil;
  5. import org.springframework.web.multipart.MultipartFile;
  6. import javax.servlet.ServletOutputStream;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import java.io.File;
  10. /**
  11. * 文件上传、下载、删除
  12. */
  13. public class DocumentParse {
  14. /**
  15. * 文件批量上传
  16. */
  17. public void batchUpload(MultipartFile[] files, HttpServletRequest request) {
  18. // 定义文件上传路径
  19. String path = "";
  20. if (files.length > 0) {
  21. for (MultipartFile file : files) {
  22. String originalFilename = file.getOriginalFilename();
  23. String id = IdUtil.createSnowflake(1, 1).nextIdStr();
  24. String filePath = path + id + originalFilename.substring(originalFilename.lastIndexOf("."));
  25. try {
  26. file.transferTo(new File(filePath));
  27. } catch (Exception e) {
  28. }
  29. }
  30. }
  31. }
  32. /**
  33. * 下载
  34. *
  35. * @param response
  36. */
  37. public void download(HttpServletResponse response) {
  38. String filePath = "文件上传路径";
  39. String fileName = "文件名称(包括文件格式)";
  40. try {
  41. // 创建输出流对象
  42. ServletOutputStream outputStream = response.getOutputStream();
  43. //以字节数组的形式读取文件
  44. byte[] bytes = FileUtil.readBytes(filePath);
  45. // 设置返回内容格式
  46. response.setContentType("application/octet-stream");
  47. // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
  48. // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
  49. // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
  50. fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
  51. // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
  52. response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
  53. // 返回数据到输出流对象中
  54. outputStream.write(bytes);
  55. // 关闭流对象
  56. IoUtil.close(outputStream);
  57. } catch (Exception ignored) {
  58. }
  59. }
  60. /**
  61. * 删除
  62. */
  63. public void delete() {
  64. String filePath = "文件上传路径";
  65. File file = new File(filePath);
  66. if (file.exists()) {
  67. file.delete();
  68. }
  69. }
  70. }

springboot多文件上传、删除、下载到项目本地的更多相关文章

  1. springboot+web文件上传和下载

    一.首先安装mysql数据库,开启web服务器. 二.pom.xml文件依赖包配置如下: <?xml version="1.0" encoding="UTF-8&q ...

  2. SpringBoot下文件上传与下载的实现

    原文:http://blog.csdn.net/colton_null/article/details/76696674 SpringBoot后台如何实现文件上传下载? 最近做的一个项目涉及到文件上传 ...

  3. javaWeb文件上传与下载

    文件上传与下载在项目中运用的使用频率很大 今天也花时间整理了一下 多文件上传图片回显 和文件下载  1.多文件上传 这里会涉及到几个属性 fileSizeThreshold:缓冲区文件的大小 如果上传 ...

  4. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  5. 七、springBoot 简单优雅是实现文件上传和下载

    前言 好久没有更新spring Boot 这个项目了.最近看了一下docker 的知识,后期打算将spring boot 和docker 结合起来.刚好最近有一个上传文件的工作呢,刚好就想起这个脚手架 ...

  6. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  7. SpringBoot 文件上传、下载、设置大小

    本文使用SpringBoot的版本为2.0.3.RELEASE 1.上传单个文件 ①html对应的提交表单 <form action="uploadFile" method= ...

  8. SpringBoot图文教程4—SpringBoot 实现文件上传下载

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...

  9. java web学习总结(二十四) -------------------Servlet文件上传和下载的实现

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  10. (转载)JavaWeb学习总结(五十)——文件上传和下载

    源地址:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传 ...

随机推荐

  1. Odoo 通过Javascript调用模型中自定义方法

    实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 在js脚本函数中调用模型中自定义方法: this._rpc({ model: 'demo.wizard ...

  2. Windows版本免费PyMol的安装

    技术背景 在前面一篇博客中,我们介绍过在Linux平台下安装和使用免费版本的PyMol.其实同样的这个免费版在Windows平台上(这里以win11为例)也是支持的. 安装流程 这个免费版本的PyMo ...

  3. 搭建lnmp环境-redis(第四步)

    1.下载epel仓库 (前面安装过了) yum install epel-release -y 2.下载redis数据库 yum install redis -y 3.启动redis服务 system ...

  4. holiday week 1

    本周进度总结: JAVA javafx以安装完毕并完成了环境配置 因处于小学期中java暂时搁置学习 自学了部分链表.多线程以及一些C/C++的知识,对部分C++库有了更进一步了解 因多线程的问题将平 ...

  5. nats 简介和使用

    nats 简介和使用 nats 有 3 个产品 core-nats: 不做持久化的及时信息传输系统 nats-streaming: 基于 nats 的持久化消息队列(已弃用) nats-jetstre ...

  6. docker 容器卷

    创建各种卷 [root@docker ~]# docker volume create mqy-vo101 mqy-vo101 [root@docker ~]# docker inspect mqy- ...

  7. Android 性能稳定性测试工具 mobileperf 开源 (天猫精灵 Android 性能测试-线下篇)

    Android 性能稳定性测试工具 mobileperf 开源 (天猫精灵 Android 性能测试-线下篇) 这篇文章写得很好!感谢阿里云开发者社区!!! 原文地址: https://develop ...

  8. 图解Java设计模式

    待补充 设计模式介绍 设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案. 设计模式使用的位置 功能模块+框架上. 设计模式在软件中哪里?面向对象( ...

  9. 论文写作:test 和 testing 使用的区别

    "test" 和 "testing" 的区别主要在于它们在句子中的用途和语法功能: Test: 名词: 指的是一次测试或考试.例如: "The stu ...

  10. 如何理解计算机类论文、机器学习论文、人工智能AI论文中的“soft”和“hard”呢?

    如何理解计算机类论文.机器学习论文.人工智能AI论文中的"soft"和"hard"呢? 最近在看论文中总看到带有"soft"和"h ...