博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC处理文件上传
阅读量:4091 次
发布时间:2019-05-25

本文共 2226 字,大约阅读时间需要 7 分钟。

处理文件上传 发表在

Spring MVC处理文件上传也是蜻蜓点水轻松惬意,今天让我们简单的学习一下吧。

环境准备

  • 一个称手的文本编辑器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、Idea Intellij)
  • Java环境(JDK 1.7或以上版本)
  • Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装)

初始化Spring MVC应用代码

参考建立一个最简单的基于Spring Boot的Web应用。在处理文件的过程中涉及到输入输出流的操作,为此引入库依赖:

com.google.guava
guava
18.0

创建@Controller处理文件上传请求

表单中添加的文件本质上也是表单中的一项,使用MultipartFile类对它进行了封装:

import com.google.common.io.Files;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.RestController;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOException;@RestControllerpublic class FileUploadController {    @RequestMapping(value="/upload", method= RequestMethod.GET)    public String provideUploadInfo() {        return "You can upload a file by posting to this same URL.";    }    @RequestMapping(value="/upload", method=RequestMethod.POST)    public String handleFileUpload(@RequestParam("file") MultipartFile file) throws IOException {        if (!file.isEmpty()) {            String name = file.getOriginalFilename();            try {                Files.write(file.getBytes(), new File(name));                return "You successfully uploaded " + name + "!";            } catch (Exception e) {                return "You failed to upload " + name + " => " + e.getMessage();            }        } else {            return "You failed to upload because the file was empty.";        }    }}

handleFileUpload()方法获取上传的文件对象后,需要先判断其是否为空,如果不为空方才通过Files.write()方法存储至文件系统。

文件上传配置

服务期程序处理用户上传的文件时,一个最重要的措施就是限制用户上传文件的大小,否则如果用户上传一个5GB大小的文件将会消耗巨大的服务器资源。使用框架,可以通过src/main/resources/application.properties轻松配置这些参数:

multipart.maxFileSize=32MBmultipart.maxRequestSize=32MB

maxFileSize限制的是总文件大小,maxRequestSize限制的是包含multipart/form-data表单数据的请求总大小,上述例子中都不能超过32MB,还可以使用KB, GB等单位进行配置。

文件上传表单

HTML中用户处理文件上传的输入框是<input type="file">

  
File to upload:
Press here to upload the file!

需要注意的是,务必指定<form>enctype属性为multipart/form-data才能支持将本地文件上传到服务器。

更多文章请访问
你可能感兴趣的文章
为什么我抛弃了 Ubuntu?
查看>>
GitHub 标星 2.7w+!超全大厂面试笔记整理!
查看>>
牛逼!这款神器能在浏览器跑 VS Code,让你随时随地写代码!
查看>>
推荐一位 10w+ 粉丝的 Python 工程师
查看>>
如何从零开始,自学成为一名数据科学家?
查看>>
前 Facebook 工程师:不要再用你认为正确的方式学算法了!
查看>>
英伟达小姐姐开源 Python 隐藏技巧,上了 GitHub 热榜!
查看>>
面经 | 为了拿到 Google offer,我都付出了哪些努力?
查看>>
阿里千万级并发课程开课了,达不到 25.6 万年薪全额退款
查看>>
美观实用!Star 过万,用 Python 做交互式图形的这款工具火了!
查看>>
阿里面试 100% 会问到的 JVM,我们还有必要学吗?
查看>>
VS Code 1.40 发布!可自行搭建 Web 版 VS Code!
查看>>
干了 7 年后端后,我成功转型并拿到了大厂 AI 算法 offer
查看>>
GitHub 标星 1.8w+,带你从零入门 Go 语言!
查看>>
我开发了一款软件,完成了舔狗的绝地反杀(代码开源)!
查看>>
你知道 Hello World 的这几十种写法吗?
查看>>
科技向善:全网黑客,都在帮一个脑瘫女孩破解软件!
查看>>
为啥拼死我也要进互联网大厂?
查看>>
2019 最新计算机技能排名出炉:Python 排第三,第一名是...
查看>>
这些项目,入选了 2019 年最佳开源软件榜单!
查看>>