返回顶部
首页 > 资讯 > 精选 >如何用SpringBoot框架来接收multipart/form-data文件
  • 312
分享到

如何用SpringBoot框架来接收multipart/form-data文件

2023-07-06 13:07:20 312人浏览 独家记忆
摘要

这篇“如何用SpringBoot框架来接收multipart/fORM-data文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看

这篇“如何用SpringBoot框架来接收multipart/fORM-data文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用springBoot框架来接收multipart/form-data文件”文章吧。

SpringBoot框架接收multipart/form-data文件

现在很多文件上传类型都是multipart/form-data类型的,Http请求如下所示:

如何用SpringBoot框架来接收multipart/form-data文件

可是问题就在于如果用传统的Struts2或者servlet等都可以很容易的实现文件接收的功能,例如下面的代码就可以实现:

boolean isMultipart = ServletFileUpload.isMultipartContent(request);//判断是否是表单文件类型  DiskFileItemFactory factory = new DiskFileItemFactory();  ServletFileUpload sfu = new ServletFileUpload(factory);  List items = sfu.parseRequest(request);//从request得到所有上传域的列表  for(Iterator iter = items.iterator();iter.hasNext();){      FileItem fileitem =(FileItem) iter.next();      if(!fileitem.isFormField()&&fileitem!=null){//判读不是普通表单域即是file          System.out.println("name:"+fileitem.getName());      }  }

可是今天我把这一段代码放在SpringBoot上面的时候就怎么也接收不到文件信息了,一直以为是前端什么数据传输错了。后来才知道原来SpringBoot有它自己的接收请求的代码。下面就给大家详细介绍一下它是如何实现这个功能的。

首选做一个简单的案例,也就是单个文件上传的案例。为了进行这个案例,首先需要建立一个SpringBoot框架

前台html代码:

<html>  <body>    <form action="/upload" method="POST" enctype="multipart/form-data">      <input type="file" name="file"/>      <input type="submit" value="Upload"/>     </form>  </body>  </html>

如何用SpringBoot框架来接收multipart/form-data文件

后台接收代码:

        @RequestMapping("/upload")        @ResponseBody        public String handleFileUpload(@RequestParam("file") MultipartFile file) {            if (!file.isEmpty()) {                try {                                        BufferedOutputStream out = new BufferedOutputStream(                            new FileOutputStream(new File(                                    file.getOriginalFilename())));                    System.out.println(file.getName());                  out.write(file.getBytes());                    out.flush();                    out.close();                } catch (FileNotFoundException e) {                    e.printStackTrace();                    return "上传失败," + e.getMessage();                } catch (IOException e) {                    e.printStackTrace();                    return "上传失败," + e.getMessage();                }                    return "上传成功";                } else {                return "上传失败,因为文件是空的.";            }        }

这样便可以接收multipart/form-data类型的文件。接下来,我们来看一个上传多个文件并且每个文件都有多个字段的案例。

前台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>            <title>Hello World!</title>        </head>        <body>           <form method="POST" enctype="multipart/form-data" action="/batch/upload">                <p>文件1:<input type="text" name="id" /></p>               <p>文件2:<input type="text" name="name" /></p>               <p>文件3:<input type="file" name="file" /></p>               <p><input type="submit" value="上传" /></p>           </form>        </body>    </html>

如何用SpringBoot框架来接收multipart/form-data文件

后台接收代码:

@RequestMapping(value = "/batch/upload", method = RequestMethod.POST)          @ResponseBody          public String handleFileUpload(httpservletRequest request) {            MultipartHttpServletRequest params=((MultipartHttpServletRequest) request);            List<MultipartFile> files = ((MultipartHttpServletRequest) request)                      .getFiles("file");             String name=params.getParameter("name");            System.out.println("name:"+name);            String id=params.getParameter("id");            System.out.println("id:"+id);            MultipartFile file = null;              BufferedOutputStream stream = null;              for (int i = 0; i < files.size(); ++i) {                  file = files.get(i);                  if (!file.isEmpty()) {                      try {                          byte[] bytes = file.getBytes();                          stream = new BufferedOutputStream(new FileOutputStream(                                  new File(file.getOriginalFilename())));                          stream.write(bytes);                          stream.close();                      } catch (Exception e) {                          stream = null;                          return "You failed to upload " + i + " => "                                  + e.getMessage();                    }                  } else {                      return "You failed to upload " + i                              + " because the file was empty.";                  }            }              return "upload successful";        }

这样就可以实现对多个文件的接收了功能了。

SpringBoot还可以对接收文件的格式还有个数等等进行限制,我这里就不多说了,大家有兴趣的可以自己去了解了解。

千万要记住SpringBoot对multipart/form-data类型的文件接收和其它是不一样的,大家以后遇到的时候要千万小心,不要像我一样一往无前的踩进去还傻傻的以为是前端的错误。

SpringBoot接收文件

package cn.juhe.controller; import net.sf.JSON.jsONObject;import org.springframework.WEB.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.Random; @RestControllerpublic class UploadTest {        @PostMapping("/upload")    public JSONObject handleFileUpload(HttpServletRequest request) {        Iterator<String> fileNames = ((MultipartHttpServletRequest) request).getFileNames();        JSONObject result = null;        while (fileNames.hasNext()) {            String next = fileNames.next();            MultipartFile file = ((MultipartHttpServletRequest) request).getFile(next);            System.out.println("file.getName():" + file.getName());            System.out.println("file.getOriginalFilename():" + file.getOriginalFilename());            String folder = "E:\\upload\\received\\";            String picName = new Date().getTime() + ".jpg";            File filelocal = new File(folder, picName);            result = new JSONObject();            result.put(picName, folder + picName);            try {                file.transferTo(filelocal);            } catch (IOException e) {                e.printStackTrace();            }        }        JSONObject jsonObject = new JSONObject();        jsonObject.put("error_code", 223805);        jsonObject.put("reason", "文件过大或上传发生错误");        Random random = new Random();        if (random.nextInt(10) > 3) {            jsonObject.put("error_code", 0);            jsonObject.put("reason", "success");             jsonObject.put("result", result);        }        return jsonObject;    }         @PostMapping("/uploadCommon")    //public JSONObject upload(MultipartFile multipartFile) throws IOException {    public JSONObject upload(@RequestParam("A") MultipartFile multipartFile) throws IOException {        String name = multipartFile.getName();//上传文件的参数名        String originalFilename = multipartFile.getOriginalFilename();//上传文件的文件路径名        long size = multipartFile.getSize();//文件大小        String folder = "E:\\upload\\received\\";        String picName = new Date().getTime() + ".jpg";        File filelocal = new File(folder, picName);        multipartFile.transferTo(filelocal);               JSONObject jsonObject = new JSONObject();        jsonObject.put("error_code", 223805);        jsonObject.put("reason", "文件过大或上传发生错误");        Random random = new Random();        if (random.nextInt(10) > 3) {            jsonObject.put("error_code", 0);            jsonObject.put("reason", "success");            JSONObject result = new JSONObject();            result.put(name, folder + picName);            jsonObject.put("result", result);        }        return jsonObject;    }}

以上就是关于“如何用SpringBoot框架来接收multipart/form-data文件”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: 如何用SpringBoot框架来接收multipart/form-data文件

本文链接: https://lsjlt.com/news/358479.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用SpringBoot框架来接收multipart/form-data文件
    这篇“如何用SpringBoot框架来接收multipart/form-data文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2023-07-06
  • 怎么用SpringBoot框架来接收multipart/form-data文件
    这篇文章主要介绍“怎么用SpringBoot框架来接收multipart/form-data文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用SpringBoot框架来接收multipart/...
    99+
    2023-07-05
  • 用SpringBoot框架来接收multipart/form-data文件方式
    目录SpringBoot框架接收multipart/form-data文件SpringBoot接收文件总结SpringBoot框架接收multipart/form-data文件 今天...
    99+
    2023-02-27
    SpringBoot框架 SpringBoot接收multipart SpringBoot接收form-data
  • python如何使用form-data形式上传文件请求
    本篇内容介绍了“python如何使用form-data形式上传文件请求”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!虽然现在基本上都约定俗成...
    99+
    2023-07-06
  • SpringBoot框架如何管理Xml和CSV文件类型
    这篇文章主要介绍了SpringBoot框架如何管理Xml和CSV文件类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、文档类型简介1、XML文档XML是可扩展标记语言,是...
    99+
    2023-06-02
  • ASP 接口框架文件:如何快速入门?
    ASP 接口框架是一种基于 ASP 技术的开发框架,可以帮助开发者快速搭建接口服务。ASP 接口框架的文件结构清晰,使用简单,具有良好的可维护性和扩展性。本文将为您介绍 ASP 接口框架的基本用法,帮助您快速入门。 一、框架文件结构 AS...
    99+
    2023-07-28
    接口 框架 文件
  • 如何在go中使用shell命令来管理文件框架?
    如何在Go中使用Shell命令来管理文件框架? 在Go中使用Shell命令可以让开发者更加方便地管理文件框架。本文将介绍如何在Go中使用Shell命令来实现文件的创建、删除、复制、移动、重命名以及查找等操作。 创建文件 在Go中,我们可...
    99+
    2023-11-10
    文件 框架 shell
  • ASP 接口框架文件:如何在项目中使用它?
    ASP 接口框架文件是一种帮助开发人员快速创建 ASP 接口的工具,可以大大提高开发效率和代码质量。在本文中,我们将会介绍如何在项目中使用 ASP 接口框架文件,并且提供一些演示代码供大家参考。 一、什么是 ASP 接口框架文件? ASP...
    99+
    2023-07-27
    接口 框架 文件
  • 如何使用Python path框架来管理存储和文件路径?
    Python是一种高级编程语言,它提供了许多强大的框架和库,其中包括用于管理文件路径的path框架。在本文中,我们将深入了解如何使用Python path框架来管理存储和文件路径,以便您可以更好地组织和管理您的代码和项目。 一、Python...
    99+
    2023-09-09
    path 框架 存储
  • 基于SpringBoot框架如何管理Excel和PDF文件类型
    这篇文章主要介绍基于SpringBoot框架如何管理Excel和PDF文件类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、文档类型简介1、Excel文档Excel一款电子表格软件。直观的界面、出色的计算功能和图...
    99+
    2023-06-02
  • Flask如何接收前端ajax传来的表单(包含文件)
    目录Flask接收前端ajax传来的表单Flask利用ajax进行表单请求和响应总结Flask接收前端ajax传来的表单 HTML,包含一个text类型文本框和file类型上传文件 ...
    99+
    2023-01-03
    Flask ajax Flask接收ajax表单 Flask接收前端ajax表单
  • 如何在 Windows 上使用 Python 文件框架?
    当今,Python 已成为最流行的编程语言之一。Python 提供了一个强大的文件处理框架,它可以让用户轻松地处理各种类型的文件。在本文中,我们将介绍如何在 Windows 上使用 Python 文件框架。 在 Windows 环境下,Py...
    99+
    2023-11-08
    文件 windows 框架
  • 如何使用Python构建响应文件框架?
    如何使用Python构建响应文件框架? 在Python编程领域中,构建一个响应式文件框架是一个非常重要的任务。文件框架是指一套用于管理和组织数据的程序结构,它可以支持多种数据类型,包括文本、图像和音频等。本文将介绍如何使用Python编程语...
    99+
    2023-07-20
    响应 文件 框架
  • ASP 接口框架文件:如何优化你的开发流程?
    在开发 ASP 网站时,接口是一个非常重要的组成部分。接口可以使我们的网站更加灵活和可扩展。但是,在实际开发中,我们经常会发现自己在编写重复的接口代码,这不仅浪费了时间,也增加了错误的风险。 为了解决这个问题,我们可以使用 ASP 接口框...
    99+
    2023-07-27
    接口 框架 文件
  • ASP 接口框架文件:如何保证你的代码质量?
    在开发 ASP 网站的过程中,接口框架文件是非常重要的一部分。它们定义了网站的整体架构,以及各个模块之间的交互方式。因此,编写高质量的接口框架文件是确保你的 ASP 网站稳定运行的关键之一。本文将介绍一些保证 ASP 接口框架文件质量的方...
    99+
    2023-07-27
    接口 框架 文件
  • 如何利用ASP缓存框架接口来优化你的网站?
    ASP缓存框架是一个非常有用的工具,可以帮助你优化你的网站,提高性能和用户体验。在本文中,我们将探讨如何使用ASP缓存框架接口来优化你的网站,并提供一些演示代码来帮助你更好地理解和应用这些技术。 什么是ASP缓存框架? ASP缓存框架是一种...
    99+
    2023-06-14
    缓存 框架 接口
  • 如何在ASP中使用缓存框架接口来提高性能?
    ASP是一种非常流行的Web开发框架,但是在使用ASP进行开发时,我们经常会遇到性能问题。为了解决这些问题,我们可以使用缓存框架接口来提高性能。在本文中,我们将介绍如何在ASP中使用缓存框架接口来提高性能。 一、缓存框架接口简介 缓存框架接...
    99+
    2023-06-14
    缓存 框架 接口
  • 如何使用spring框架ResponseEntity实现文件下载
    这篇文章给大家分享的是有关如何使用spring框架ResponseEntity实现文件下载的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。spring框架ResponseEntity实现文件下载后台代码@Reque...
    99+
    2023-06-29
  • 如何在Python项目中使用打包文件框架来提高代码质量?
    Python是一种强大的编程语言,广泛应用于数据科学、Web开发、人工智能和许多其他领域。在Python项目中,使用打包文件框架可以提高代码质量,使代码更易于维护和分发。本文将介绍如何在Python项目中使用打包文件框架来提高代码质量。 一...
    99+
    2023-06-22
    打包 文件 框架
  • 如何在 Python 中使用 Spring 框架的文件上传组件?
    Spring 是一个非常流行的 Java 开发框架,它提供了一系列的组件和工具来帮助开发者快速构建高效、可维护的应用程序。其中,文件上传组件是一个非常实用的组件,它可以帮助我们在应用程序中实现文件上传功能。 那么,在 Python 中如何...
    99+
    2023-09-04
    文件 关键字 spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作