文档章节

springMvc处理multipart形式的数据(上传图片)

Clover286
 Clover286
发布于 2017/05/08 13:20
字数 437
阅读 104
收藏 1

一.应用场景

上传图片,视频等数据

二.技术

springmvc

三.使用方法

3.1配置

3.1.1 WebInitializer.java

//配置文件上传的具体参数,如保存路径、文件大小等等
//注意:MultipartConfigElement()第一个参数是上传的文件保存位置,配置里不要写
	@Override
	protected void customizeRegistration(ServletRegistration.Dynamic registration) {
		registration.setMultipartConfig(
				new MultipartConfigElement("",2000000,10000000,0));
	}

放置位置如下: 

package shop.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.MultipartConfigElement;
import javax.servlet.ServletRegistration;

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	@Override
	protected String[] getServletMappings() {
		return new String[] { "/" };
	}

	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class<?>[] { RootConfig.class };
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class<?>[] { WebConfig.class };
	}
	//配置文件上传的具体参数,如保存路径、文件大小等等
	@Override
	protected void customizeRegistration(ServletRegistration.Dynamic registration) {
		registration.setMultipartConfig(
				new MultipartConfigElement("",2000000,10000000,0));
	}

}

3.1.2 WebConfig.java 

//处理multipart数据,即上传图片、视频等
	@Bean
	public MultipartResolver multipartResolver() throws IOException {
		return new StandardServletMultipartResolver();
	}

放置位置如下: 

package shop.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import java.io.IOException;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "shop.web" })
public class WebConfig extends WebMvcConfigurerAdapter {

	@Bean
	public ViewResolver viewResolver() {
		InternalResourceViewResolver resolver = new InternalResourceViewResolver();
		resolver.setPrefix("/WEB-INF/jsp/");
		resolver.setSuffix(".jsp");
		resolver.setExposeContextBeansAsAttributes(true);
		return resolver;
	}
	//处理multipart数据,即上传图片、视频等
	@Bean
	public MultipartResolver multipartResolver() throws IOException {
		return new StandardServletMultipartResolver();
	}

	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}


}

3.2 前端

一定要加:enctype="multipart/form-data"

<form action="" method="post" enctype="multipart/form-data">       
       <input name="imgFile" type="file">         
</form>

3.2 java后端

request.getSession().getServletContext().getRealPath("/"):指向项目所在服务器的绝对路径

filePath :指向项目下名为img的文件夹,我这个项目里img文件夹是直接放在webapp下面的

重点:@RequestPart("imgFile") MultipartFile imgFile

@RequestMapping(value = "add",method = RequestMethod.POST,produces={"application/json;charset=utf-8"})
    @ResponseBody
    public void addProduct(@RequestPart("imgFile") MultipartFile imgFile, HttpServletRequest request) throws IOException{
        // 判断文件是否为空
        if (!imgFile.isEmpty()) {
            try {
                // 文件保存路径
                String filePath = request.getSession().getServletContext().getRealPath("/") + "img/"
                        + imgFile.getOriginalFilename();
                // 转存文件
                imgFile.transferTo(new File(filePath));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      
    }

 

对上传图片的处理请参考相关文档

© 著作权归作者所有

共有 人打赏支持
Clover286
粉丝 10
博文 205
码字总数 66768
作品 0
武汉
程序员
私信 提问
Spring MVC 配置 multipart 解析器 上传文件

概述 尽管一般表单提交足以满足对典型的基本文本提交,但是当面对传送二进制数据,例如图片,视频等就显得力不从心了。与之不同的是,multipart 格式的数据会将一个表单拆分为多个部分 ,每个...

聪聪小可爱
2016/11/06
0
0
springmvc - 文件上传

Springmvc 文件上传简介(https://linesh.gitbooks.io/spring-mvc-documentation-linesh-translation/content/publish/21-10/springs-multipart-file-upload-support.html) 使用servlet3 的 ......

中柠檬
2016/11/20
22
0
SpringMVC处理multipart请求.

一、简述 multipart格式的数据会将一个表单拆分为多个部分(part),每个部分对应一个输入域。在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部...

jmcui
2018/01/03
0
0
SpringMVC+Spring+Mybatis整合应用(3)

实现图片上传 需求:在用户注册页面实现上传图片作为用户头像 1. springmvc中对多部件类型请求数据解析:在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart...

江左煤郎
2018/12/03
0
0
SpringMVC框架 -- 上传图片

一.创建图片虚拟目录 在上传图片之前,先要设置虚拟目录(以IDEA为例) 打开工具栏的运行配置Edit Configurations 添加物理目录和并设置虚拟目录路径 添加img图片在img文件夹内 测试访问:h...

Mr_欢先生
2017/09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js算法总结

数列求和 等差数列求和 function sum(a0,d,n){//a0->首项,d->公差,n->项数//(首项+末项)*项数/2return (a1+(a1+d*n))*n/2;} 等比数列求和 function sum(a0,q,n){//a0->首项,q->公......

祖达
32分钟前
1
0
小白?转型?毕业生?外行学习快速入行大数据开发指南

这篇文章中,本文将针对三种不同的、想要进入数据科学领域的人群,给出自己的经验,帮助他们迅速有效入行。 虽然没有适合每个人的万能解决方案,但这三类建议值得想转行的你一看。 第1类:新...

董黎明
40分钟前
1
0
好文 | MySQL 索引B+树原理,以及建索引的几大原则

MySQL事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下。 一、存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的。 ...

Java爬坑之路
43分钟前
1
0
mysql group by 和 Order By 执行顺序

1.在写统计的时候,我们会用到统计首单,这样里面设计到排序。写子查询的方式当然可以实现, 但是我们有时候,需要创建视图,视图不支持带子查询的。 加了排序后会返回,排序后的哪个第一条数...

kuchawyz
47分钟前
2
0
Spring Boot 2.X 如何添加拦截器?

最近使用SpringBoot2.X搭建了一个项目,大部分接口都需要做登录校验,所以打算使用注解+拦截器来实现,在此记录下实现过程。 一、实现原理 1. 自定义一个注解@NeedLogin,如果接口需要进行登...

花漾年华
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部