SpringBoot之MultipartFile文件上传(6)
1、静态文件
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>文件上传</title>
- </head>
- <body>
- <form enctype="multipart/form-data" method="post" action="/v1/upload">
- 文件:<input type="file" name="fileName"/></br></br>
- 备注:<input type="text" name="remark"/>
- <input type="submit" value="上传"/>
- </form>
- </body>
- </html>
2、return result
- package cn.xiaobing.demo.pojo;
- public class Result {
- private int code;
- private Object data;
- private String msg;
- public int getCode() {
- return code;
- }
- public void setCode(int code) {
- this.code = code;
- }
- public Object getData() {
- return data;
- }
- public void setData(Object data) {
- this.data = data;
- }
- public String getMsg() {
- return msg;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- public Result(int code, Object data, String msg) {
- super();
- this.code = code;
- this.data = data;
- this.msg = msg;
- }
- public Result() {
- super();
- }
- @Override
- public String toString() {
- return "Result [code=" + code + ", data=" + data + ", msg=" + msg + "]";
- }
- }
3、FileController
- package cn.xiaobing.demo.controller;
- import java.io.File;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.PropertySource;
- 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 cn.xiaobing.demo.pojo.Result;
- @Controller
- @PropertySource(value = { "application.properties" })//指定配置文件
- public class FileController {
- @Value("${web.upload.filepath}")//获取配置文件中的配置参数
- private String filePath;
- // private static final String filePath = "C:/oneself/eclipse-workspace/springboot-v0/src/main/resources/static/images";
- @RequestMapping(value="/v1/upload")
- @ResponseBody
- public Object upload(@RequestParam("fileName") MultipartFile file,HttpServletRequest request) {
- String remark = request.getParameter("remark");//备注信息
- String filename = file.getOriginalFilename();//获取文件名称
- String suffixname = filename.substring(filename.lastIndexOf("."));//后缀
- filename = UUID.randomUUID() + suffixname;//文件上传后重命名数据库存储
- File dest = new File(filePath,filename);
- Map<String, String> data = new HashMap<String, String>();
- data.put("filename", filename);
- data.put("备注 ", remark);
- try {
- //MultipartFile对象的transferTo方法用于文件的保存(效率和操作比原来用的FileOutputStream方便和高效)
- file.transferTo(dest);//拷贝文件到指定路径储存
- return new Result(0, data, "上传成功");
- } catch (Exception e) {
- e.printStackTrace();
- return new Result(-1, data, "上传失败");
- }
- }
- }
4、启动项目
- . ____ _ __ _ _
- /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
- ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
- \\/ ___)| |_)| | | | | || (_| | ) ) ) )
- ' |____| .__|_| |_|_| |_\__, | / / / /
- =========|_|==============|___/=/_/_/_/
- :: Spring Boot :: (v2.0.1.RELEASE)
5、访问upload.html上传文件
6、点击上传,上传文件成功
7、点击上传,上传失败
8、设置上传文件大小限制,编码如下,在启动类中添加@Bean方法
- package cn.xiaobing.demo;
- import javax.servlet.MultipartConfigElement;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.boot.web.servlet.MultipartConfigFactory;
- import org.springframework.context.annotation.Bean;
- @SpringBootApplication
- public class XiaoBingApplication {
- public static void main(String[] args) {
- SpringApplication.run(XiaoBingApplication.class,args);
- }
- @Bean
- public MultipartConfigElement multipartConfigElement() {
- MultipartConfigFactory factory = new MultipartConfigFactory();
- factory.setMaxFileSize("10240KB");//设置上传单个文件最大10M
- factory.setMaxRequestSize("102400KB");//设置上传文件总数据最大100M
- return factory.createMultipartConfig();
- }
- }
9、maven打包执行
(1) pom.xml引入依赖
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
(2)打jar包-项目右键-Run As-Maven Install
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESS
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 45.874 s
- [INFO] Finished at: 2020-06-29T23:44:45+08:00
- [INFO] ------------------------------------------------------------------------
(3)启动项目
(4) Test
10、不足之处,后续优化。。。
SpringBoot之MultipartFile文件上传(6)的更多相关文章
- SpringBoot项目实现文件上传和邮件发送
前言 本篇文章主要介绍的是SpringBoot项目实现文件上传和邮件发送的功能. SpringBoot 文件上传 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要 ...
- Springboot如何启用文件上传功能
网上的文章在写 "springboot文件上传" 时,都让你加上模版引擎,我只想说,我用不上,加模版引擎,你是觉得我脑子坏了,还是觉得我拿不动刀了. springboot如何启用文 ...
- SpringBoot+BootStrap多文件上传到本地
1.application.yml文件配置 # 文件大小 MB必须大写 # maxFileSize 是单个文件大小 # maxRequestSize是设置总上传的数据大小 spring: servle ...
- SpringBoot之KindEditor文件上传
后端核心代码如下: package com.blog.springboot.controller; import java.io.BufferedOutputStream; import java.i ...
- springboot+vue实现文件上传
https://blog.csdn.net/mqingo/article/details/84869841 技术: 后端:springboot 前端框架:vue 数据库:mysql pom.xml: ...
- SpringBoot: 6.文件上传(转)
1.编写页面uploadFile.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- Springboot(九).多文件上传下载文件(并将url存入数据库表中)
一. 文件上传 这里我们使用request.getSession().getServletContext().getRealPath("/static")的方式来设置文件的存储 ...
- springboot升级导致文件上传自动配置/tmp目录问题解决
1,..\web\src\main\resources\spring\web-men-applicationContext.xml 保留原有的bean配置 <bean id="mult ...
- SpringMVC实现 MultipartFile 文件上传
1. Maven 工程引入所需要的依赖包 2. 页面需要开放多媒体标签 3. 配置文件上传试图解析器 4. 接收图片信息,通过 IO 流写入磁盘(调用解析其中的方法即可) 如下: 1.1 引入所依赖的 ...
随机推荐
- pycharm 增删改查 mysql数据库
1.pycharm创建mysql数据表######################################################import pymysql# 创建连接con = p ...
- 事项同步事项编码(mt_code)长度超过数据库限制的varchar(32)线上问题
改下长度限制重新同步下,可以恢复正常!
- 微信小程序自动化测试
使用官方工具 使用webview测试方法,当2019年被微信封禁 使用native定位
- python学习笔记(一)-基础知识
O.解释型语言和编译型语言 编译型语言就是先把写好的程序翻译成计算机语言然后执行,就是所谓的一次编译到处运行,比如c.c++就是编译型语言,这样的语言特点是运行速度快,但是需要事先把程序编译好才可以. ...
- Java对象构造
关于对象构造的一些认识. 默认域初始化 如果在构造器中没有显示地给域赋予初值,那么就会被自动地赋予默认值:数值为0,布尔值为false,对象引用为null.然而,这显然是不安全的,在一个null引用上 ...
- Dockerfile 的常用参数注解和范例
一. docker hello world 1.1 Dockerfile FROM centos:7.5.1804 MAINTAINER 11@qq.com CMD echo "hello ...
- P6329-[模板]点分树 | 震波
正题 题目链接:https://www.luogu.com.cn/problem/P6329 解题思路 给出\(n\)个点的一棵树,每个点有权值,有\(m\)次操作 修改一个点\(x\)的权值为\(y ...
- P7518-[省选联考2021A/B卷]宝石【主席树,二分】
正题 题目链接:https://www.luogu.com.cn/problem/P7518 题目大意 给出\(n\)个点的一棵树,每个点上有不大于\(m\)的数字. 然后给出一个长度为\(c\)的各 ...
- Liunx下Mysql,MongoDB性能优化的配置
场景 这几天在赶十一上线的项目,但是突然发现接口性能不好,高并发支持不住.又不想改代码,就在数据库层面进行优化. Mysql 分区:项目中有对40万条的数据进行时间查询的要求,就算对DateTime建 ...
- 实验4:开源控制器实践——OpenDaylight
实验4:开源控制器实践--OpenDaylight 一.实验目的 能够独立完成OpenDaylight控制器的安装配置: 能够使用Postman工具调用OpenDaylight API接口下发流表. ...