【SpringMVC】使用SpringMVC进行上传文件!

写在前面:

  之前在上传文件的时候,使用的是commons-file-upload这个插件,非常方便,能控制每个文件的大小,总共大小,缓存,以及支持多个文件的同时上传,但是写一次上传文件的后台代码量太大了,如图

如果有多个地方都要上传文件,每一次都要复制,粘贴一遍又一遍,实在是太麻烦,后台想到能不能把相同的代码都封装到一个方法,然后需要使用的时候再稍微改一下就行了,在封装的过程中,发现原来SpringMVC有自带的上传文件组件,遂用了一下,感觉多然很方面!

下面详细的说一下使用步骤!

  1,准备好相应的Jar包

    ①commons-fileupload.jar

    ②commons-io-2.4.jar

    版本可能无需跟我一样,但这两个jar包是必须的!

  2,配置SpringMVC的上传文件解析器:

  

其中有主要有两个属性

  maxUploadSize:上传文件的总限制大小(单位是字节)

  maxInMemorySize:缓存大小(单位同样是字节)

注意:这里的ID不能改变!

  3,书写代码:

     

这里简单的说明一下,

    MultipartHttpServletRequest

        主要用到的方法有两个

        ①getFiles("FiledName")

        获取表单中FiledName这个标签所勾选的文件,getFiles能获取多个文件

        ②getFileMap()这个也能获取上传的照片,不过只能获取单个文件,还是建议使用getFiles比较方便

  

  MultipartFile

      主要用到的方法有

      ①getContentType()获取文件类型 例如:images/JPEG

      ②getSize()获取单个文件的大小 单位 字节

      ③getOriginalFilename()获取文件的名字 可以根据这个来获取文件的后缀名

以上是将表单中的图片读到了服务器的内存中,暂时这些图片是放在内存中,如果要对图片的分辨率或者是其他信息进行检测该怎么办呢?

  以前的办法是先将图片保存在服务器的硬盘上,然后读取这个图片的信息,如果不符合则删除,符合再继续执行其他操作

  今天看了同事之前的一段代码,恍然大悟,其实只要用到流就能读取到这个图片的信息

  在MultipartFile里面有个方法是getInputStream()

  ImageIo有个方法是read()参数类型正好是输入流值是一个BufferedImaged

  所以我们可以这样,BufferedImaged img=ImageIO.read(mf.getInputStream());

  然后再判断这个img的相关属性,如果对的话再将其写入硬盘中,如果不符合就丢弃!

注意:

  我在做上传图片的时候遇到过一个问题,上传了10张图片不调试的时候只能成功1张,调试的时候又全部成功,究其原因原来是我将每个图片以当前时间戳为命名方式,但是程序运行太快,一秒钟就处理了好多张图片,也就是说同一秒内写入了三张图片,因为文件名相同,所以只有最后一张图片会保留在硬盘上,其余的都被覆盖了 。。。我也是醉了加个随机数吧!

  

时间: 2024-12-19 03:52:43

【SpringMVC】使用SpringMVC进行上传文件!的相关文章

SpringMvc (注解)中的上传文件

第一步:导入commons-fileupload-1.3.1.jar 和commons-io-2.2.jar 架包 第二步:在applicationContext.xml中 配置 <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/> 第三步:在页面 <form>标签添加属性enctype=”multipart/form-dat

springMVC+spring+hibernate注解上传文件到数据库,下载,多文件上传

数据库 CREATE TABLE `annex` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `realName` varchar(36) DEFAULT NULL, `fileContent` mediumblob, `handId` bigint(20) DEFAULT NULL, `customerId` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_id` (`handId`), CON

(H5)FormData+AJAX+SpringMVC跨域异步上传文件

最近都没时间整理资料了,一入职就要弄懂业务,整天被业务弄得血崩. 总结下今天弄了一个早上的跨域异步上传文件.主要用到技术有HTML5的FormData,AJAX,Spring MVC. 首先看下上传页面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="js/plugins/

SpringMVC上传文件的三种方式(转载)

直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/commonsmultipartresolver.java.html 前台: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <%@ page language="java" contentTy

SpringMVC系列(四)注解方式上传文件

本文主要介绍SpringMVC上传文件的两种方式 第二种较第一种而言,采用了解析器,大大提高了上传的效率. 第一种: 步骤: 1.引入jar包 2.配置spring-servlet.xml文件 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.Commons

SpringMVC+jquery.uploadify 上传文件

前言 以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo. 刚开始用form表单的方式提交,在Controller Action中用@RequestParam MultipartFile file就能拿到上传文件信息.后我直接使用uploadify的方式上传,接口没有做任何调整,上传的过程中报http400, 客户端的请求不符合接口的要求,表单post提交时报文参数是以Form Data方式,

SpringMVC上传文件的三种解析方式

springMVC上传文件后,在action解析file文件的三种方式. jsp页面的写法: <form action="parserUploadFile1" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit"

SpringMVC基础(二)采用注解上传文件

Spring通过对Servlet API的HttpServletRequest接口进行扩展,使其能够很好地出来文件上传.扩展后的接口名为:org.springframework.web.multipart.MultipartHttpServletRequest. 同时需要注意的是,上传文件无论什么框架都需要用到"enctype"上传方式必须采用method方式. 上传两个jar包: com.springsource.org.apache.commons.fileupload com.s

springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)

参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head> <title>using commons Upload to