SpringBoot上传、下载文件

[Spring Boot] 利用MultipartFile进行文件上传和下载 的开发 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体... 阅读详情

页面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>单文件上传</title>
</head>
<body>
<h3>单文件上传</h3>
<form method="post" action="/file/upload" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="提交">
</form>

<h3>多文件上传</h3>
<form method="post" action="/file/uploads" enctype="multipart/form-data">
    <input type="file" multiple name="file">
    <input type="submit" value="上传">
</form>
</body>
</html>

=========================================================================

后台逻辑

package com.cn.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.UUID;

@Controller
@RequestMapping("/file/")
public class FileController {
    /*单文件上传*/
    @RequestMapping("upload")
    @ResponseBody
    public String upload(@RequestParam("file")MultipartFile file){
        //获取原始名字
        String fileName = file.getOriginalFilename();
        //获取后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //文件保存路径
        String filePath = "d:/file/";
        //文件重命名,防止重复
        fileName = filePath+ UUID.randomUUID() + fileName;
        //文件对象
        File dest = new File(fileName);
        //判断路径是否存在,不存时创建
        if(!dest.getParentFile().exists()){
            dest.getParentFile().mkdir();
        }
        try {
            //将文件保存到服务器
            file.transferTo(dest);
            System.out.println("================");
            return "上传成功";
        }catch (Exception e){
            e.printStackTrace();
        }
        return"上传失败";
    }
    @RequestMapping("/uploads")
    @ResponseBody
    public String handleFileUpload(HttpServletRequest request){
        List<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("file");
        MultipartFile file = null;
        for(int i = 0;i < files.size();i++){
            file = files.get(i);
            if(!file.isEmpty()){
                try {
                    //获取原始名字
                    String fileName = file.getOriginalFilename();
                    //文件保存路径
                    String filePath = "d:/file/";
                    //防止文件重命名
                    fileName = filePath + UUID.randomUUID()+fileName;
                    //文件对象
                    File dest = new File(fileName);
                    //保存到服务器
                    file.transferTo(dest);
                }catch (Exception e){
                    e.printStackTrace();
                    return"上传失败";
                }
            }else{
                return"上传失败";
            }
        }
        return"上传成功";
    }

    @RequestMapping("/download")
    public void download(HttpServletResponse response) throws Exception{
        //文件地址
        String fileName = "a.txt";
        String filePath = "D:/file";

        File file = new File(filePath+"/"+fileName);
    //创建输入对象
        FileInputStream fis = new FileInputStream(file);
        //设置相关格式
        response.setContentType("application/force-download");
        //设置下载后的文件名及handler
        response.setHeader("Content-Disposition","attachement;fileName =" + fileName);
        //创建输出对象
        OutputStream os = response.getOutputStream();

        //常规操作
        byte[]buf = new byte[1024];
        int len = 0;
        while ((len = fis.read(buf)) != -1){
            os.write(buf,0,len);
        }
        fis.close();
    }
}
springboot整合vue实现上传下载文件 springboot整合vue实现上传下载文件 文章目录springboot整合vue实现上传下载文件1上传下载文件api文件2.上传大文件配置3.vue前端主要部分 环境 springboot 1.5.x 完整代码下载: springboot整合vue实现上传下 1上传下载文件api文件 设置上传路径,如例子: private final static String rootPath =... 阅读详情

相关推荐

基于Springboot和Mybatis的文件上传与下载

0. 前言 因为太久太久没有碰项目了(上一次还是2021年8月开发个人博客的时候),所以这一次打算从头到尾把整个学习和搭建的过程记录下来。 1. 简介 这是一个基于SpringBoot和Mybatis的企业级文件上传下载的实战项目,没有太多前端和UI的东西。 2. 链接 【编程不良人】基于SpringBoot和Mybatis企业级文件上传下载项目实战 1. 设计 1. 需求 用户登陆,展示用户的所有文件(文件如果是图片则在页面中显示图片) 完成文件的下载和在线打开(在线打开不计入下载次数) 在一张页面中完

三明治文鱼的博客 3124

springboot携带参数上传文件-支持单文件或多文件

记录一下 便于后续使用 新手写得不好 @ResponseBody @RequestMapping(value = "/upUserData", method = RequestMethod.POST) public Object upUserData(HttpServletRequest request, @RequestParam(value = "userId", required = false) String userId) { JSONObject jsonObje

qq_42706672的博客 730

SpringBoot文件上传下载详解

下载的原理其实就是根据你要下载的文件名看看我们的磁盘中有没有这个文件对比一下文件名字,如果有就下载,没有就下载失败。首先理解一下文件上传的原理,其实就是把传过来的文件存到我们的磁盘上,既然要存磁盘所以我们得指定文件存储的路径等。这篇文章记录我自己的学习过程的SpringBoot的文件上传下载的代码的理解。代码写完了介绍问了,接下来测试一下看看我们的接口能不能用。可以看到上传成功了,也生成了文件名。首先先把代码写上,然后逐一理解。我的路径值得就是这个。

Fzyabc的博客 1294

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

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

锥栗的博客 3612

【VS2017】“LNK1104 cannot open file ‘python39_d.lib‘ “

记录一下编译调用了python代码的C语言源程序时遇到的问题 版本:以python3.9.1为例 先确保你安装了python的debug版本,如果没有,用对应版本安装包可以修改已经安装的python,如图。 选择 “Modify” 选择next 确保最后一项勾选,然后install。 光安装了还不够,需要配置一下C语言编译器。 以VS2017为例: 将python37_d.lib(在安装目录下的libs文件夹里有python39_d.lib)所在文件夹的路径添加到库目录里面,右键你的解决方案,选.

m0_46296905的博客 6478

2017全国大学生电子设计大赛B题 | 板球控制系统(四)机械设计相关

转载请注明出处。   转眼2019了诶,可能有些同学又该问了,哇向阳哥,你这个鸽子放的好,转眼大半年了一年都没更新,我也知道啊,说好的源码呢,挖的机械的坑呢?咕咕咕咕我也不想啊,我这不是懒吗!过年有空了,又到了收红包泡妹子玩游戏.......呸,学习准备比赛码代码的时候了,终于有点空闲,于是乎今晚先把机械的大坑填了。     咱话先说在最前面。机械这玩意,靠经验,也考想象力,更要命的还是出了...

王向阳的博客 3万+

SpringBoot实现MultipartFile文件上传

1、SpringBoot采用FileUpload组件实现上传处理,在控制器中可以使用MultipartFile类进行接收。 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://ww...

HiterCoder 4048

PVE 8.0 保姆级换源教程:从Debian到LXC仓库,一次搞定国内镜像(附弹窗去除)

本文提供PVE 8.0保姆级换源教程,涵盖从Debian基础源到LXC仓库的国内镜像配置,并附赠去除订阅弹窗的实用技巧。通过详细步骤和命令示例,帮助用户快速优化ProxmoxVE环境,提升下载速度并消除干扰提示,适用于虚拟化平台的高效管理。

weixin_33282146的博客 413

springboot微服务之间的MultipartFile文件传输

版本:spring-boot-starter-parent【1.5.13.RELEASE】 代码: 跳转端: /** * restTemplate方式请求url * @param serviceUrl 调用服务路径 * @param fileMap 上传文件数据 * @return Object */ private Object invokeUploadMethod(String serviceUrl, MultiValueMap<String, Multipart

qq_42174979的博客 2081

H3C IPsec over GRE VPN 实验

配置 IPsec over GRE VPN 来连通两端内网

M建的博客 2481

Vue项目实战:5分钟搞定高德地图离线部署(附避坑指南)

本文详细介绍了在Vue项目中实现高德地图离线部署的完整方案。针对内网或网络隔离环境,通过获取并改造JSAPI文件、下载组织地图瓦片数据,并集成vue-amap组件,实现地图功能的本地化运行。文中提供了核心代码、避坑指南及性能优化建议,帮助开发者快速构建稳定可靠的离线地图应用。

data3的博客 936

springboot实现文件的上传与下载

这里仅实现文件的上传与下载服务,完整项目文末有源码 1.先看一下项目结构 上面indexcontroller是用于指向首页的index.html;实际功能由Filecontroller来实现。 2.前端使用模板引擎thymeleaf 3.上传与下载功能 这里提供了单文件上传,多文件上传;下载这三个功能 单文件上传 @RequestMapping(value = "/upload") public String upload(@RequestParam("file") Multipar

lk的博客 2万+

【100%通过率】2024华为OD机试真题E卷 C++语言 实现【流浪地球】

流浪地球计划在赤道上均匀部署了N个转向发动机,按位置顺序编号为0~N-1。 1) 初始状态下所有的发动机都是未启动状态; 2) 发动机起动的方式分为“手动启动”和“关联启动”两种方式; 3) 如果在时刻1一个发动机被启动,下一个时刻2与之相邻的两个发动机就会被“关联启动”; 4) 如果准备启动某个发动机时,它已经被启动了,则什么都不用做; 5) 发动机0与发动机N-1是相邻; 地球联合政府准备挑选某些发动机在某些时刻进行“手动启动”,当然最终所有的发动机都会被启动。 哪些发动机最晚被启动呢?

MISAYAONE的博客 4213

SpringBoot实现文件上传和下载

本文主要讲了文件上传和下载的实现方式。关键是文件下载后端多种实现方式以及前端通过window.open、ajax和axios实现文件下载。

qq_55896432的博客 2万+

服务器取证——服务器基础知识

服务器基础知识

记录并分享学习安全的知识点.. 2482

图像处理基础 || (一) python 读取图像的常用方式

图像的读取与保存是图像处理或计算机视觉领域中最基本的操作,python中有众多的库支持图像的读取、显示与存储,常用的库包括 matplotlib、skimage 和 Pillow 库。

weixin_40234309的博客 5692

SpringBoot文件上传下载

上传下载

WinnerBear的博客 8040

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringBoot 文件上传和下载

本篇文章介绍SpringBoot的上传和下载。一、创建SpringBoot工程,添加依赖 compile("org.springframework.boot:spring-boot-starter-web") compile("org.springframework.boot:spring-boot-starter-thymeleaf")工程目录为:Application.java ...

不忘初心的专栏 6359

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SpringBoot实现文件上传下载详解

文件上传模块: 思路: MultipartFile用来接受前台传来的文件 transferTo方法:把这个文件路径所指向的文件上传到对应的目录下。

Rocky balboa 7278

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringBoot实现 文件上传&下载

使用SpringBoot 实现文件的分块上传、异步下载

qq_51602170的博客 1827

基于springboot文件上传和下载

基于springboot文件上传和下载

hyt_struggle的博客 5198

SpringBoot 文件的上传、下载

目录文件上传文件下载说明   文件上传 spring-boot-starter-web中已经包含了springmvc的依赖,其中包括上传文件所需的依赖,不需要额外添加依赖。   application.properties #所允许的文件最大尺寸,默认10MB spring.servlet.multipart.max-file-size=1024MB #所允许的请求最大尺寸,默认10MB spring.servlet.multipart.max-request-size=1024MB #

chy-x 的博客 1715

SpringBoot 如何实现文件上传和下载

在本文中,我们介绍了Spring Boot如何实现文件上传和下载,包括依赖、配置、Controller和模板的编写。通过本文,您应该能够了解文件上传和下载在Spring Boot中的实现方式,并可以使用相应的代码示例进行实践。Spring Boot提供了简单且易于使用的方式来实现文件上传和下载,这对于许多Web应用程序来说是非常重要的功能。在实现文件上传和下载时,需要注意安全性和文件大小的限制,并根据实际需求进行相应的配置。

IT徐师兄 6718

Spring Boot | Spring Boot中进行 “文件上传” 和 “文件下载”

目录: 一、SpringBoot中进行 " 文件上传" : 1.编写 "文件上传" 的 “表单页面” 2.在全局配置文件中添加文件上传的相关配置 3.进行文件上传处理,实现 "文件上传" 功能 4.效果测试 二、SpringBoot中进行 "文件下载" : “英文名称” 文件下载 : 1.添加文件下载工具依赖 2.定制文件下载页面 3.编写文件下载处理方法 4.效果测试 “中文名称” 文件下载 : 1.添加文件下载工具依赖 2.定制文件下载页面 3.编写文件下载处理方法 4.效果测试 .....

m0_70720417的博客 5224

SpringBoot实现文件上传、下载到服务器

一、SpringBoot模拟文件上传,下载 上传:文件前端传入,后端获取到文件通过输出流写入文件 下载:获取到文件路径,通过输入流读取,在通过输出流写入文件实现下载 #文件上传大小配置 单个文件大小 总的文件大小 spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=100MB <dependency> <groupId>org.sprin

清峰的博客 1万+

SpringBoot后台如何实现文件上传下载

版权声明:本文为博主原创文章,转载时请注明出处,谢谢!喝酒不骑马 邮箱myz9412@163.com https://blog.youkuaiyun.com/Colton_Null/article/details/76696674 </div> ...

飞天小鱼 3157
上一篇: springBoot Pom文件
下一篇: GIT提交代码
庆涛1992
博客等级 码龄9年 37粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值