(十)SpringBoot的文件上传

一:添加commons-fileupload依赖

打开pom文件添加

<dependency>
   <groupId>commons-fileupload</groupId>
   <artifactId>commons-fileupload</artifactId>
   <version>1.3.1</version>
</dependency>

  

二:添加系统变量

打开core→constant文件,添加文件保存路径

//文件上传储存的地址
public static final String SAVEFILEPATH = "F://img";

  

三:添加文件上传限制

application.properties中添加

spring.http.multipart.enabled=true #默认支持文件上传.
spring.http.multipart.file-size-threshold=0 #支持文件写入磁盘.
spring.http.multipart.location= # 上传文件的临时目录
spring.http.multipart.max-file-size=1Mb # 最大支持文件大小
spring.http.multipart.max-request-size=10Mb # 最大支持请求大小

  

  

四:创建文件上传工具类

创建core→utils→UploadActionUtil.java

package com.example.demo.core.utils;

import com.example.demo.core.constant.ProjectConstant;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @author yux
 * 文件上传控制器
 */
public class UploadActionUtil {

	public static List<String> uploadFile(HttpServletRequest request) throws Exception {
		List<String> list = new ArrayList<>();
		CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
				request.getSession().getServletContext());
		if (multipartResolver.isMultipart(request)) {
			MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
			Iterator<String> iterator = multiRequest.getFileNames();
			while (iterator.hasNext()) {
				// 取得上传文件
				MultipartFile file = multiRequest.getFile(iterator.next());
				if (file != null) {
					// 取得当前上传文件的文件名称
					String myFileName = file.getOriginalFilename();
					// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
					if (myFileName.trim() != "") {
						String fileTyps = myFileName.substring(myFileName.lastIndexOf("."));
						// String tempName="demo"+fileTyps;
						String tempName = UUID.randomUUID().toString() + fileTyps;
						// 创建文件夹
						String folderPath = ProjectConstant.SAVEFILEPATH + File.separator + folderName();
						File fileFolder = new File(folderPath);
						if (!fileFolder.exists() && !fileFolder.isDirectory()) {
							fileFolder.mkdirs();
						}
						File uploadFile = new File(folderPath + File.separator + tempName);
						file.transferTo(uploadFile);
						myFileName = folderName() + File.separator + tempName;
						list.add(ProjectConstant.SAVEFILEPATH + "//" + myFileName);
					}
				}
			}
		}
		return list;
	}

	/**
	 * 得年月日的文件夹名称
	 *
	 * @return
	 */
	public static String getCurrentFilderName()  throws Exception{
		Calendar now = Calendar.getInstance();
		return now.get(Calendar.YEAR) + "" + (now.get(Calendar.MONTH) + 1) + "" + now.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 创建文件夹
	 *
	 * @param filderName
	 */
	public static void createFilder(String filderName) throws Exception {
		File file = new File(filderName);
		// 如果文件夹不存在则创建
		if (!file.exists() && !file.isDirectory()) {
			file.mkdirs();
		}
	}

	/**
	 * 文件扩展名
	 *
	 * @param fileName
	 * @return
	 */
	public static String extFile(String fileName)  throws Exception{
		return fileName.substring(fileName.lastIndexOf("."));
	}

	/**
	 * 当前日期当文件夹名
	 *
	 * @return
	 */
	public static String folderName() throws Exception {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		String str = sdf.format(new Date());
		return str;
	}
}

  

五:创建UploadFileController

package com.example.demo.controller;

import com.example.demo.core.ret.RetResponse;
import com.example.demo.core.ret.RetResult;
import com.example.demo.core.utils.UploadActionUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@RestController
@RequestMapping("/uploadFile")
public class UploadFileController {

    @PostMapping("/upload")
    public RetResult<List<String>> upload(HttpServletRequest httpServletRequest) throws Exception {
        List<String> list = UploadActionUtil.uploadFile(httpServletRequest);
        return RetResponse.makeOKRsp(list);
    }
}

  

六:测试

打开postman

输入localhost:8080/uploadFile/upload

注意:请求参数如下

原文地址:https://www.cnblogs.com/yui66/p/9632829.html

时间: 2024-11-08 01:42:01

(十)SpringBoot的文件上传的相关文章

SpringBoot图文教程4—SpringBoot 实现文件上传下载

有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 大哥大姐新年好,点赞转发不要少 SpringBoot 图文系列教程技术大纲 鹿老师的Java笔记 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2—日志的使用「logback」「log4j」 Sp

SpringBoot入门十九,简单文件上传

项目基本配置参考SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用myEclipse新建一个SpringBoot项目即可.现在来给项目添加一个MyBatis支持,添加方式非常简单,仅需两步即可,具体内容如下: 1. pom.xml添加以下配置信息 <!-- 文件上传配置开始 --> <!-- 9.引入commons-io依赖 --> <dependency> <groupId>commons-io</groupId

springBoot的文件上传功能

知识点: 后台:将上传的图片写入指定服务器路径,保存起来,返回上传后的图片路径(在springBoot中,参考博客:http://blog.csdn.net/change_on/article/details/59529034) 前端:在Vue.js前端框架中,使用Vue_Core_Image_Upload插件,上传图片 (github地址:https://github.com/Vanthink-UED/vue-core-image-upload) 后台: 1)在Controller中写一个方法

springboot+web文件上传和下载

一.首先安装mysql数据库,开启web服务器. 二.pom.xml文件依赖包配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio

Struts2(十五)实现文件上传

一.导入包 需要将commons-fileupload和commons-io包和struts包一起导入 实现步骤: 在Jsp页面实现客户端选择上传文件 配置Struts.xml,拦截器会自动接收上传的文件 在Action中实现代码上传文件存入服务器中 跳转至新页面展示上传的文件 二.单个文件上传 上传页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding=&

【php增删改查实例】第二十四节 - 文件上传在项目中的具体应用

文件上传在项目中,一般有两个用武之地,分别为设置用户的头像和上传附件.本节我们演示如果进行用户头像的上传. 因为一个用户单独并且唯一对应了一个头像,是一对一的关系,所以我们需要去给tm_users表添加一个头像字段 – header . 点击保存按钮,完成表字段的添加. 本节中的头像上传,可以对图像进行裁剪,最终上传到服务器的是一个经过裁剪后的图像. 图像是保存在磁盘上的,数据库只负责保存头像的地址. 现在把 5-10上课资料文件夹中的imageUpload文件夹拷贝到5-10文件夹中. ima

SpringBoot之文件上传

前端页面 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> &

Springboot Feign文件上传

服务提供者 @SpringBootApplication public class FeignUploadFirstApplication { @RestController public class UploadController { @RequestMapping(value = "/uploadFile",method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Str

Django(十九)文件上传:图片上传(后台上传、自定义上传)、

一.基本设置 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/http/file-uploads/ 1)配置project1/settings.py 因为图片也属于静态文件,所以保存到static目录下. MEDIA_ROOT=os.path.join(BASE_DIR,"static/media") 2)在static目录下创建media目录,再创建应用名称的目录,此例为app1 F:\Test\django-demo\pro