文件上传
文件上传:
继承Multipartfile类
111111111111111111111111111
文件上载后保存到服务器本地供其他组件调用:
1.MultipartFile
2.FileUtils.copyInputStreamToFile
enctype="multipart/form-data"
SpringMVC处理文件上传的方法:
通过MultipartFile参数接收获取文件流信息
处理文件上传的 @RequestMapping 方法需要定义一个参数 MultipartFile,这个参数有些获取用户上传文件基本信息的方法,如:
public String upload(
// 定义来自表单字段 name="file" 的元素
@RequestParam("file") MultipartFile file
) {
// handle upload file code ...
}
isEmpty(); 是否是空文件
getName();
getOriginalFilename(); 用户原始文件名
getSize(); 上传文件大小
getInputStream(); 获取上传流
(and so on ……)
文件上传需要定义 bean:CommonsMulitipartResolver
CommonsMulitipartResolver:
参数:maxUploadSize:最大上传大小,单位 b
参数:defaultEncoding:字符编码
参数:resolveLazily:是否懒加载
前缀 Commons- 代表它实现自 commons-fileupload,commons-fileupload 又依赖 commons-io
单文件上传、
问题:如何maven下载源代码
FileUpload——单文件上传(SpirngMVC提供了文件上传的支持,通过配置,就可以使用SpringMVC提供的接口来完成文件的上传)
配置:在SpringMVC的上下文环境mvc-dispatcher-servlet.xml中添加一个<bean>如下图,其中CommonsMultpartResolver是解析上传文件的类,它其中的属性maxUploadSize,是用来限制上传文件的大小,并设置大小为200兆的字节(209715200),默认编码属性defaultEncoding选用UTF-8,属性resolveLazily为是否使用延迟加载,这里值为true,使用延迟加载提高性能,在需要时才进行文件上传的解析,并在依赖管理中引入这个commons-fileupload的jar包,并且该jar包依赖commons-io的jar包(隐性的引入了该jar包),正好编码中也是用到了这个io包,这里就不用显示的引入它了。
书写Controller:提供一个名为showUploadPage()方法,该方法用于跳转到下载文件的界面,跳转的JSP界面提供了一个form表单,表单包含input的类型为file的标签和input的类型为submit的标签,表单form中加入一个enctype属性,值为multipart/form-data,该属性是文件上传必须要显示指明的一个属性,如果没有该属性无法完成文件上传,form表单的action属性值为/courses/doUpload,所以要在CourseController中提供一个方法,并且文件上传通常指明它是通过POST方式传递过来,RequestMapping(value="doUpload",method=RequestMethod.POST),在方法的参数里使用到了SpringMVC提供的支持文件上传的类(MultipartIFile),可以查看该类的源代码(可以上网查阅如何查看Maven下的源代码),MuilipartFile提供了一些方法来访问文件,比如,获取文件名、获取文件的最初文件名(也就是本地文件名)、获取文件类型、查看该文件是否是空文件、文件大小以及文件二进制、还可以获取它的流进行读取操作,如下图二,并且这里使用@RequestParam("file")使表单的file的input标签与该方法参数相关联,这样SpringMVC就会将input的name为file的元素值绑定到Controller的参数上,并且类型会转换成MultipartFile,接下就需要把服务器传过来的文件存储在某个地方,以提供其他应用所使用,这里把它拷贝到C盘的目录(C:\temp\imooc),如果文件不为空,输出日志信息和本地文件名字,FileUtils是Commons-io的一个文件类,可以用它的copyInputStreamToFile做文件的拷贝和文件流的操作,该方法有两个参数,第一参数是源文件所代表的流(InputStream类型,这里使用MultipartFile的getInputStream()获取该流),第二个参数是File类型,并且File的第一个参数是目标地,第二个是文件名,这里必须+文件的原始名称,否则报错。
MultipartFile
将页面控件 name 映射到参数中
@RequestParam("file") MultipartFile file
判断文件是否为空 !file.isEmpty()
Fileutils.copyInputStreamTofile(file.getInputStream(),new File("\\asdfas\\adsfadf\\"))
MultipartFile接口请求中接收的上载文件
判断是否有上传文件!file.isEmpty()
获取上传的文件名file.getOriginalFilename()
FilUtils.copyInputStreamToFile(source,destination)文件拷贝和i/o流的操作。第一个参数本地的文件流,第二个参数要拷贝的地址。
文件上传文件配置和包
笔记(一):上传文件:
bean(mvc配置文件中):
依赖(pom.xml):
controller跳转的jsp:
1、配置文件
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="209715200" /> <property name="defaultEncoding" value="UTF-8" />
<property name="resolveLazily" value="true" />
</bean>
2、导入jar包 commons-fileupload.jar、commons-io.jar
3、前台页面表单必须加上 enctype="multipart/form-data" 属性
<form method="post" action="/courses/doUpload" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit">
</form>
4、控制器代码
SpringMVC单文件上传:
并在依赖管理中添加:
上传文件功能是Spring mvc自带的服务,需要进行配置即可使用
jsp文件上传
<form method="post" action="/courses/doUpload" enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit"> </form>
一、文件上传
1、Spring配置
2、jar包引入
3、页面写法
4、controller的写法
文件上传: 1、在servlet中配置一个bean:multipartResolver 2、在pom.xml中配置支持这个bean的jar包multipartResolver 3、jsp表单中用post方法提交文件,form中必须指定enctype="multipart/form-data" <form method="post" action="/courses/doUpload" enctype="multipart/form-data"> <input type="file" name="file"/>
文件上传配置的依赖fileupload
文件上传配置的bean
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="209715200" />
<property name="defaultEncoding" value="UTF-8" />
<property name="resolveLazily" value="true" />
</bean>
文件上传bean
<bean id="multipartResolver" class="org.springfamework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="209715200" /> <property name="defaultEncoding" value="UTF-8" /> <property name="resolveLazily" value="true" /> </bean>
controller
html
pom依赖
文件上传配置
使用Spring MVC进行文件的上传: 1.导入commons-fileupload.jar、commons-io.jar2.在DispatcherServlet配置文件中配置一个CommonsMultipartResolver类,并为其属性进行赋值.<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置文件上传大小限制--> <property name="maxUploadSize" value="209715200" /> <!--默认字符集--> <property name="defaultEncoding" value="UTF-8"/> <!--是否使用懒加载模式--> <property name="resolveLazily" value="true"/> </bean>3.前台页面form表单提交到Controller下的某个方法,enctype属性要设置为multipart/form-data(文件上传时必须显式写明).表单下存在type为file的input标签与提交按钮. <form action="/courses/doUpload"enctype="multipart/form-data" method="post"><input type="file" name="file"/> <input type="submit" value="提交"/> </form>