由于,新项目要求要使用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>