1.在src下创建filter包,包内Class名UploadFilter

package com.gd.filter;

import org.apache.catalina.servlet4preview.http.HttpServletRequest;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; @WebFilter(urlPatterns = "/upload/*", filterName = "uploadFilter")
public class UploadFilter implements Filter {
//定义文件路径常量
public static final File UPLOAD_FOLDER = new File("F:\\nginx-1.14.2\\html\\upload");//修改上传路径
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化uploadFilter");
} @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//转换ServletRequest request类型
HttpServletRequest req = (HttpServletRequest) request;
String uri = req.getRequestURI();
int index = uri.lastIndexOf("/");
String fileName = uri.substring(index + 1);
File file = new File(UploadFilter.UPLOAD_FOLDER, fileName);
//输入流
FileInputStream fileInputStream = new FileInputStream(file);
byte[] bs = new byte[(int) file.length()];
fileInputStream.read(bs);
//关闭流
fileInputStream.close();
//转换ServletResponse response类型
HttpServletResponse resp = (HttpServletResponse) response;
resp.getOutputStream().write(bs);
System.out.println("---请求进入--");
} @Override
public void destroy() { }
}

2.在控制层(controller)编写交互接口

package com.gd.controller;

import com.gd.filter.UploadFilter;
import org.apache.catalina.servlet4preview.http.HttpServletRequest;
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.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import java.io.File;
import java.io.IOException; @RestController
public class UploadController { /**
* 文件上传
*
* @param multipartFile
* @param request
* @return
*/
@RequestMapping("/uploadFile")
public String uploadFile(@RequestParam("multipartFile") MultipartFile multipartFile,HttpServletRequest request) {
System.out.println(multipartFile.getOriginalFilename());
System.out.println("上传的文件夹路径:" + UploadFilter.UPLOAD_FOLDER);
if (UploadFilter.UPLOAD_FOLDER.exists() == false) {
UploadFilter.UPLOAD_FOLDER.mkdirs();
}
//准备用来接收数据的文件
File uploadFile = new File(UploadFilter.UPLOAD_FOLDER, multipartFile.getOriginalFilename());
try {
multipartFile.transferTo(uploadFile);
} catch (IOException e) {
e.printStackTrace();
}
return "ok";
}
}

3.前端页面上传入口静态页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/uploadFile" method="post" enctype="multipart/form-data">
<input type="file" name="multipartFile">
<input type="submit" value="提交">
</form> </body>
</html>

Springboot文件上传代码笔记的更多相关文章

  1. 补习系列(11)-springboot 文件上传原理

    目录 一.文件上传原理 二.springboot 文件机制 临时文件 定制配置 三.示例代码 A. 单文件上传 B. 多文件上传 C. 文件上传异常 D. Bean 配置 四.文件下载 小结 一.文件 ...

  2. Springboot文件上传与下载

    一.创建简单的springboot-web项目 二.文件上传属性配置 #默认支持文件上传 spring.http.multipart.enabled =true spring.http.multipa ...

  3. servlet3.0获取参数与文件上传代码示例

    转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98   package com.igeek.servlet;   import ...

  4. php文件上传代码解析

    php文件上传代码解析 is_uploaded_file()  //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...

  5. springboot 文件上传和下载

    文件的上传和下载 1.文件上传 html页面代码如下 <form method="post" action="/file/upload1" enctype ...

  6. 【SpringBoot】07.SpringBoot文件上传

    SpringBoot文件上传 1.编写html文件在classpath下的static中 <!DOCTYPE html> <html> <head> <met ...

  7. SpringBoot学习笔记(8)-----SpringBoot文件上传

    直接上代码,上传文件的前端页面: <body> <form action="/index/upload" enctype="multipart/form ...

  8. SpringBoot 文件上传临时文件路径问题

    年后放假回来,一向运行OK的项目突然图片上传不了了,后台报错日志如下: java.io.IOException: The temporary upload location [/tmp/tomcat. ...

  9. springboot 文件上传大小配置

    转自:https://blog.csdn.net/shi0299/article/details/69525848 springboot上传文件大小的配置有两种,一种是设置在配置文件里只有两行代码,一 ...

随机推荐

  1. Java枚举enum以及应用:枚举实现单例模式

    枚举作为一个常规的语言概念,一直到Java5才诞生不得不说有点奇怪,以至于到现在为止很多程序员仍然更喜欢用static final的形式去命名常量而不使用,一般情况下,Java程序员用这种方式去实现枚 ...

  2. python 环境搭建及pycharm的使用

    一.windows 1.上官网下载python3.5  https://www.python.org/downloads/ 2.安装的时候勾选path 3.安装完成后打开cmd 输入python查看安 ...

  3. IAAS-虚拟化技术组件介绍

    虚拟化技术组件涉及众多,下面对一些组件所处的层级以及定位做个简单的汇总介绍,部分信息来自于网络整理,如有不准确之处,请指正.

  4. [CVPR2017] Visual Translation Embedding Network for Visual Relation Detection 论文笔记

    http://www.ee.columbia.edu/ln/dvmm/publications/17/zhang2017visual.pdf Visual Translation Embedding ...

  5. TensorFlow-谷歌深度学习库 图片处理模块

    Module: tf.image 这篇文章主要介绍TensorFlow处理图片这一块,这个模块和之前说过的文件I/O处理一样也是主要从python导过来的. 通过官方文档,我们了解到这个模块主要有一下 ...

  6. linux进程、线程与cpu的亲和性(affinity)

    参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...

  7. MyBatis xml配置文件详解

    http://blog.csdn.net/fenghuibian/article/details/52525671

  8. MATCH_PARENT和FILL_PARENT之间的区别?

    很多人表示对于很多工程中的MATCH_PARENT出现在layout中感到不明白,过去只有FILL_PARENT和WRAP_CONTENT那么 match_parent到底是什么类型呢? 其实从And ...

  9. C++关于Union使用的部分总结

    说明:未加说明,struct均指C++语言中的struct(可以有成员函数,可以定义访问属性) 1 什么是Union? (1)与class,struct相似用于定义数据结构:union 可以说是一种特 ...

  10. 基于E-R模型的关系型数据库设计方法

    摘要 在管理信息系统开发中,数据库设计的目标是建立DBMS能识别的关系数据模型.而关系数据模型建立的基础是首先建立E-R模型,通过E-R模型才能转换为关系数据模型.如何建立E-R模型以及如何将E-R模 ...