springmvc3.2+mybatis3.2 实现大文件的上传

来源:互联网 发布:mac 怎么恢复u盘的文件 编辑:程序博客网 时间:2024/05/01 01:55

由于,新项目要求要使用springmvc3.2,mybatis3.2。现在项目中有一个要求就是让上传大文件。于是便开始了网上的各种搜。为了防止以后还会用到,特在此进行整理。

    1)MySQL的四种BLOB类型 
  类型 大小(单位:字节) 
  TinyBlob 最大 255 
  Blob 最大 65K 
  MediumBlob 最大 16M 
  LongBlob 最大 4G 

     首先创建的表存放文件的字段长度要足够长,能够装的下你需求的最大文件大小。在这次编写中,我忽略了这一点儿,害的找了好多资料都没找到解决的办法,最后怀疑是不是库里长度不够,才想到的。

  2)编写springmvc中的控制器

 @RequestMapping("/uploadFile.htm")
 @ResponseBody
 public Map<String,String> uploadModelFile(MouldToFile mouldToFile,HttpServletRequest request){
  Map<String,String>map=new HashMap<String,String>();
 //具体的业务逻辑

  return map;
 }

3)用来接收前台传送过来参数的实体类

public class FormFile {

/*文件流*/
 private MultipartFile filesource;

 }
 4)表对应的mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.dd.FileMapper">
 <resultMap type="*****"  id="mouldFileResult">
  <result column="filecontent" property="filecontent"   jdbcType="BLOB"  typeHandler="org.apache.ibatis.type.BlobTypeHandler" javaType="byte[]"/>
  </resultMap>

<insert  id="insertMouldFile"   parameterType="****">
  insert into 表名

  <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="filecontent != null">filecontent,</if>
   </trim>
  <trim prefix="values (" suffix=")" suffixOverrides=",">
         <if test="filecontent != null">#{filecontent,javaType=byte[], typeHandler=org.apache.ibatis.type.BlobTypeHandler},</if>
     </trim> 
 </insert>
</mapper>

5)表对应的pojo,这里的存放文件的类型使用过BLOB,byte[]。最后使用Object是大小通吃的。所以最好使用Object

public class File {

  /*文件内容*/
 private Object filecontent;

}

6)前台页面的html

<form id="**-form" name="**" method="post"  enctype="multipart/form-data">
                           <input   type="file" name="filesource"  data-options="required:true" panelHeight="auto"  data-options="prompt:'选择一个文件...'">
               </form>

以上只是一些需要注意的地方的整理。
0 0
原创粉丝点击