iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么用SpringBoot框架来接收multipart/form-data文件
  • 927
分享到

怎么用SpringBoot框架来接收multipart/form-data文件

2023-07-05 06:07:00 927人浏览 薄情痞子
摘要

这篇文章主要介绍“怎么用SpringBoot框架来接收multipart/fORM-data文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用springBoot框架来接收multipart/

这篇文章主要介绍“怎么用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上面的,所以大家首先得搭建好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://www.lsjlt.com/news/350115.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用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
  • 如何用SpringBoot框架来接收multipart/form-data文件
    这篇“如何用SpringBoot框架来接收multipart/form-data文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2023-07-06
  • python怎么使用form-data形式上传文件请求
    虽然现在基本上都约定俗成的接口都用json形式请求但是不可避免地 有些接口需要传文件流,此时就需要用form-data形式上传了for.e:存在以下接口,通过接口创建海报图 但需要上传缩略图,此时接口的Content-Type就不能是app...
    99+
    2023-05-15
    Python form-data
  • 怎么在ajax中通过调用springboot框架api传输文件
    今天就跟大家聊聊有关怎么在ajax中通过调用springboot框架api传输文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先是前台页面的代码<!DOCTYPE ...
    99+
    2023-06-08
  • SpringBoot Knife4j在线API文档框架怎么使用
    本篇内容主要讲解“SpringBoot Knife4j在线API文档框架怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot Knife4j在线API文...
    99+
    2023-07-04
  • SpringBoot怎么接收通过http上传的multi-file的文件
    这篇文章主要讲解了“SpringBoot怎么接收通过http上传的multi-file的文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么接收通过http上传的mul...
    99+
    2023-06-19
  • 分布式文件处理怎么做?Python 框架来帮忙!
    在当今互联网时代,数据量越来越大,处理数据的效率成为了一个非常重要的问题。分布式文件处理是其中一个解决方案,它可以将大量的数据分散到不同的节点上处理,从而提高处理效率。而 Python 框架也为我们提供了很多方便的工具来实现分布式文件处理...
    99+
    2023-10-14
    分布式 框架 文件
  • 怎么使用ThinkPHP框架来实现链接地址的隐藏
    这篇文章主要介绍“怎么使用ThinkPHP框架来实现链接地址的隐藏”,在日常操作中,相信很多人在怎么使用ThinkPHP框架来实现链接地址的隐藏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Think...
    99+
    2023-07-05
  • SpringBoot怎么用实体接收Get请求传递过来的多个参数
    这篇文章主要介绍了SpringBoot怎么用实体接收Get请求传递过来的多个参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么用实体接收Get请求传递过来的多个参数文章都会有所收获,下面...
    99+
    2023-06-30
  • 怎么在php中使用lavarel框架导出文件
    怎么在php中使用lavarel框架导出文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了...
    99+
    2023-06-14
  • Golang怎么使用Gin框架实现HTTP上传文件
    本文小编为大家详细介绍“Golang怎么使用Gin框架实现HTTP上传文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang怎么使用Gin框架实现HTTP上传文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作