Spring boot实现文件上传功能

本文实例为大家分享了Spring boot实现文件上传的具体代码,供大家参考,具体内容如下

1. 创建一个Maven的web工程,然后配置pom.xml文件,增加依赖:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 <version>1.0.2.RELEASE</version>
</dependency> 

2. 在webapp目录下的index.jsp文件中输入一个表单:

<html>
<body>
<form method="POST" enctype="multipart/form-data" action="/upload">
 File to upload: <input type="file" name="file"><br />
 Name: <input type="text" name="name"><br /> <br />
 <input type="submit" value="Upload">
  Press here to upload the file!
</form>
</body>

这个表单就是我们模拟的上传页面

3. 编写处理这个表单的Controller:

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream; 

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

@Controller
public class FileUploadController { 

 @RequestMapping(value="/upload", method=RequestMethod.GET)
 public @ResponseBody String provideUploadInfo() {
  return "You can upload a file by posting to this same URL.";
 } 

 @RequestMapping(value="/upload", method=RequestMethod.POST)
 public @ResponseBody String handleFileUpload(@RequestParam("name") String name,
   @RequestParam("file") MultipartFile file){
  if (!file.isEmpty()) {
   try {
    byte[] bytes = file.getBytes();
    BufferedOutputStream stream =
      new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded")));
    stream.write(bytes);
    stream.close();
    return "You successfully uploaded " + name + " into " + name + "-uploaded !";
   } catch (Exception e) {
    return "You failed to upload " + name + " => " + e.getMessage();
   }
  } else {
   return "You failed to upload " + name + " because the file was empty.";
  }
 } 

} 

4. 然后我们对上传的文件做一些限制,同时编写main方法来启动这个web :

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.embedded.MultiPartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; 

import javax.servlet.MultipartConfigElement; 

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application { 

 @Bean
 public MultipartConfigElement multipartConfigElement() {
  MultiPartConfigFactory factory = new MultiPartConfigFactory();
  factory.setMaxFileSize("128KB");
  factory.setMaxRequestSize("128KB");
  return factory.createMultipartConfig();
 } 

 public static void main(String[] args) {
  SpringApplication.run(Application.class, args);
 }
} 

5. 然后访问http://localhost:8080/upload就可以看到页面了。

上面的例子是实现的是单个文件上传的功能,假定我们现在要实现文件批量上传的功能的话,我们只需要简单的修改一下上面的代码就行,考虑到篇幅的问题,下面只是贴出和上面不同的代码,没有贴出的说明和上面一样。:

1.新增batchUpload.jsp文件

<html>
<body>
<form method="POST" enctype="multipart/form-data"
  action="/batch/upload">
 File to upload: <input type="file" name="file"><br />
 File to upload: <input type="file" name="file"><br />
 <input type="submit" value="Upload"> Press here to upload the file!
</form>
</body>
</html>

2. 新增BatchFileUploadController.java文件:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
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 java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List; 

/**
 * Created by wenchao.ren on 2014/4/26.
 */ 

@Controller
public class BatchFileUploadController { 

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

这样一个简单的批量上传文件的功能就ok了,是不是很简单啊。

注意:上面的代码只是为了演示而已,所以编码风格上采取了随性的方式,不建议大家模仿。

参考资料:MultipartResolver实现文件上传功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

1. MultipartResolver也可以实现文件上传功能。参考文章:

(0)

相关推荐

  • 全面解析SpringBoot文件上传功能

    这些天忙着刷题,又怕遗忘了spring boot, 所以抽出一点时间折腾折腾,加深点印象. spring boot 的文件上传与 spring mvc 的文件上传基本一致,只需注意一些配置即可. 环境要求: Spring Boot v1.5.1.RELEASE + jdk1.7 + myeclipse 1).引入thymeleaf,支持页面跳转 <!-- 添加thymeleaf --> <dependency> <groupId>org.springframework.

  • 详解SpringBoot文件上传下载和多文件上传(图文)

    最近在学习SpringBoot,以下是最近学习整理的实现文件上传下载的Java代码: 1.开发环境: IDEA15+ Maven+JDK1.8 2.新建一个maven工程: 3.工程框架 4.pom.xml文件依赖项 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation

  • SpringBoot实现文件上传下载功能小结

    最近做的一个项目涉及到文件上传与下载.前端上传采用百度webUploader插件.有关该插件的使用方法还在研究中,日后整理再记录.本文主要介绍SpringBoot后台对文件上传与下载的处理. 单文件上传 // 单文件上传 @RequestMapping(value = "/upload") @ResponseBody public String upload(@RequestParam("file") MultipartFile file) { try { if (

  • spring MVC + bootstrap实现文件上传示例(带进度条)

    最近学习了bootstrap,有结合了spring MVC写了个文件上传的示例,留做笔记,废话不多说,直接上代码 监听器类FileUploadProgressListener.Java package com.gpl.web.listener; import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.ProgressListener; import org.springframework.stereo

  • Spring boot实现文件上传实例(多文件上传)

    文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个表单页面(这里使用thymleaf); (4)编写controller; (5)测试: (6)对上传的文件做一些限制: (7)多文件上传实现 (1)新建maven Java project 新建一个名称为spring-boot-fileupload maven Java项目: (2)在pom.xml加入相应依赖: 加入相应的maven依赖,具体看以下解释: <pro

  • Spring Boot实现文件上传示例代码

    使用SpringBoot进行文件上传的方法和SpringMVC差不多,本文单独新建一个最简单的DEMO来说明一下. 主要步骤包括: 1.创建一个springboot项目工程,本例名称(demo-uploadfile). 2.配置 pom.xml 依赖. 3.创建和编写文件上传的 Controller(包含单文件上传和多文件上传). 4.创建和编写文件上传的 HTML 测试页面. 5.文件上传相关限制的配置(可选). 6.运行测试. 项目工程截图如下: 文件代码: <dependencies>

  • SpringBoot文件上传控制及Java 获取和判断文件头信息

    之前在使用SpringBoot进行文件上传时,遇到了很多问题.于是在翻阅了很多的博文之后,总算将上传功能进行了相应的完善,便在这里记录下来,供自己以后查阅. 首先,是建立一个标准的SpringBoot 的工程,这里使用的IDE是Intellij Idea,为了方便配置,将默认的配置文件替换为了application.yml. 1.在index.html中进行文件上传功能,这里使用的文件上传方式是ajax,当然也可以按照自己的具体要求使用传统的表单文件上传. <!DOCTYPE html> &l

  • Spring Boot + thymeleaf 实现文件上传下载功能

    最近同事问我有没有有关于技术的电子书,我打开电脑上的小书库,但是邮件发给他太大了,公司又禁止用文件夹共享,于是花半天时间写了个小的文件上传程序,部署在自己的Linux机器上. 提供功能: 1 .文件上传 2.文件列表展示以及下载 原有的上传那块很丑,写了点js代码优化了下,最后界面显示如下图: 先给出成果,下面就一步步演示怎么实现. 1.新建项目 首先当然是新建一个spring-boot工程,你可以选择在网站初始化一个项目或者使用IDE的Spring Initialier功能,都可以新建一个项目

  • springboot 文件上传大小配置的方法

    springboot上传文件大小的配置我这里记录两种,一种是设置在配置文件里只有两行代码,一种是加个Bean 首先第一种: application.properties中添加 spring.http.multipart.maxFileSize=10Mb spring.http.multipart.maxRequestSize=10Mb maxFileSize 是单个文件大小 maxRequestSize是设置总上传的数据大小 这就可以了. 根据自己需求定义吧,Mb和Kb都可以,大小写也都随意,L

  • springboot实现文件上传和下载功能

    spring boot 引入"约定大于配置"的概念,实现自动配置,节约了开发人员的开发成本,并且凭借其微服务架构的方式和较少的配置,一出来就占据大片开发人员的芳心.大部分的配置从开发人员可见变成了相对透明了,要想进一步熟悉还需要关注源码. 1.文件上传(前端页面): <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/lo

随机推荐