SpringMVC 理论与有用技术(二)文件上传

文件上传相信大家都做过,差点儿全部的项目都有上传文件的功能,尤其是BS架构的项目中经常被列为常规功能来开发。不管是在开发.NET 项目还是java项目我们会用到非常多的框架,这个功能也被集成到了框架之中,由于他太经常使用了。框架就是为我们提供了一个开发项目的半成品结构。能够大大提高开发效率节省开发成本、缩短开发周期。

长话短说本文主要介绍一个怎么利用springmvc实现单个以及多个文件上传。附加说说上传文件的原理。

从详细的某个实例開始,先形似再神思

第一种方式设计思路:三个注意地方

1.表单页面

2.xml配置文件

3.uploadController类

在多次实践和开发的过程中会逐渐理解,编程思想和设计思路也相同非常重要。他们是在重复实践中的出来的经验结晶有时比实践还要重要,就像伟大的结果非常多是有伟大的思想開始的。

1.对于文件上传表单要有特殊的属性,例如以下

	<form action="/springmvc7/file/upload2"	enctype="multipart/form-data"  method="post">
		选择文件:<input type="file" name="file"/>

		<input type="submit"   value="上传" />

	</form>

表单的enctype属性须要进行秀给。

2.xml文件

	<!--   文件上传解析器配置以及大小编码等參数	 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		  <property name="defaultEncoding" value="utf-8" />
	      <property name="maxUploadSize" value="10485760000" />
	      <property name="maxInMemorySize" value="40960" />
	</bean>

上传文件的解析器类,这里仅仅是配置了与普通的配置不一样的地方,同样的注解等配置能够參考前面几篇博客,这个类负责解析上传文件的各个參数和信息。

3.updaController.java

@Controller
@RequestMapping("/file")
public class UploadController {

	@RequestMapping("/upload")
	public String upload(@RequestParam("file") CommonsMultipartFile file ,HttpServletRequest request) throws IOException
	{
		System.out.println("filename---->"+file.getOriginalFilename());

		if (!file.isEmpty())
		{

			try {

				InputStream inputStream= file.getInputStream();

				FileOutputStream	 outputStream = new FileOutputStream("D:/"+new Date().getTime()+file.getOriginalFilename());

				int b=0;
				while ((b=inputStream.read()) != -1 ) {
					outputStream.write(b);
				}
				outputStream.flush();
				outputStream.close();
				inputStream.close();
			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
		return "/success";
	}

这种方法是用来接受上传的文件。有个參数CommonsMultipartFile file,是用来接受文件的,它能够自己推断数据类型是否是文件类型,假设是文件类型就会受到再通过输出流输出到server上。

另外一种方式同第一种非常类似,仅仅是从request里面取数据,我们都知道前后台交互的数据都是通过request、response这两个对象交互。上传了文件也会在这里面仅仅要能从里面取出来就好。

uploadController2.java

	@RequestMapping("/upload2")
	public void upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException
	{
		CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver();

		if (multipartResolver.isMultipart(request)) {
			MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest)request;

			Iterator<String> iter=multipartRequest.getFileNames();
			while(iter.hasNext())
			{
				MultipartFile file=multipartRequest.getFile((String)iter.next());
				if (file!=null) {

					String filename="demo"+file.getOriginalFilename();
					String path="D:/"+filename;
					File localfile=new File(path);
					file.transferTo(localfile);

				}
			}
		}
	}

springmvc对request进行了封装所以能够转化为request类型,也能够从里面读取数据。框架大部分都是对底层的东西进行封装以便我们用这方便,它用这配置文件比struts2少了非常多。认为配置灵活了简单了,从这一点上看springmvc比struts2灵活了非常多。

时间: 2024-12-22 04:14:52

SpringMVC 理论与有用技术(二)文件上传的相关文章

springMVC3学习(十二)--文件上传优化CommonsMultipartResolver

基于上一篇文件上传发现效率很慢,我们应该对它进行优化  使用springMVC对文件上传的解析器 来处理文件上传的时候需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明 这样客户端请求的时候 springMVC会检查request里面是否包含多媒体信息 如果包含了就会使用MultipartResolver进行解析, springMVC会使用一个支持文件  处理的MultipartHttpServletRequest来包

iOS-网络编程(二)文件上传和断点离线下载

一. iOS中发送HTTP请求的方案 在iOS中,我们常用发送HTTP请求的方案有苹果原生(自带)NSURLConnection:用法简单,最古老最经典最直接的一种方案 (iOS 9.0弃用)NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术第三方框架AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多 二. NSURLConnection (已弃用) 虽然NSURLConnection已经被弃用,但是我们还是要了解NSU

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

springMVC两种方式实现多文件上传及效率比较

springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方式,同时比较一下在效率上到底存在着多大的差距. 1.下载相关jar包. 需要引入的jar出了springMVC的jar包外,还需要引入 com.springsource.org.apache.commons.fileupload-1.2.0.jar和

WEB攻击与防御技术 pikachu——文件上传漏洞

文件上传漏洞 一.client check 首先看到标题是客户端验证 用BURP抓包,由于是客户端的检验,直接将抓到的包的文件后缀.png改成.php 发送后发现成功绕过,上传成功 二.MIME type MIME类型还是要借助Burp工具来利用 将content type文件头改成png的文件头 别的都不需要去更改,点击发送就会发现,文件上传成功,MIME绕过成功 三.getimagesize 原文地址:https://www.cnblogs.com/p201721210024/p/12077

SpringMVC 理论与实用技术(二)文件上传

文件上传相信大家都做过,几乎所有的项目都有上传文件的功能,尤其是BS架构的项目中常常被列为常规功能来开发,无论是在开发.NET 项目还是java项目我们会用到很多的框架,这个功能也被集成到了框架之中,因为他太常用了,框架就是为我们提供了一个开发项目的半成品结构,可以大大提高开发效率节省开发成本.缩短开发周期. 长话短说本文主要介绍一个怎么利用springmvc实现单个以及多个文件上传,附加说说上传文件的原理. 从具体的某个实例开始,先形似再神思 第一种方式设计思路:三个注意地方 1.表单页面 2

SpringMVC:文件上传和下载

SpringMVC:文件上传和下载 准备工作 文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作.如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver. 前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data.只有在这样的情况下,浏览

SpringMVC(四)---文件上传与下载

一,文件上传 文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作 如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver 1,文件配置及导包 对springmvc-servlet.xml进行文件配置 1 <!--文件上传配置--> 2 <bean id="multipartResolver&qu

SpringMVC——拦截器及文件上传和下载

目录 自定义拦截器 拦截器类 在springmvc的配置文件中配置拦截器 文件上传 导入jar包 配置bean:multipartResolver 采用file.Transto 来保存上传的文件 文件下载 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过滤器与拦截器的区别:拦截器是AOP思想的具体应用. 过滤器: servlet规范中的一部分,任何java web工程都可以使用 在u