您的位置:首页 > 编程语言 > Java开发

springmvc上传文件功能

2017-02-27 14:11 253 查看
1.文件上传功能需求:

通过jsp选择文件目录,点击保存到数据库(文件名)。

2.原理:使用Fileupload进行文件上传,springmvc建立文件的虚拟目录,也就是本地磁盘上,用于存放临时文件,这个临时文件是在做文件上传的时候,

通过uuid随机生成文件名(避免文件重复),然后通过MultipartFile 对象的transferTo,将文件内容写入到创建好的临时文件中,将文件名保存到数据库,完成文件上传。

3.实现步骤:

①首先页面jsp 提供form表单,form表单的要求是:enctype="multipart/form-data" method=“post” 。

②上传的input <input type="file" name="pictureFile">

③配置使用Tomcat创建虚拟目录,用于存放临时上传文件,保存文件在本地磁盘,当访问文件只需要路径就可以读取该文件。

Tomcat配置虚拟目录步骤:



④在springmvc.xml中配置文件上传表单的multipart解析器,目的是:

①[b]检查当[/b]前
Web 请求是否为 multipart类型

②设定文件的encodingtype

③设定上传文件的大小

关于multipartResolver的原理,详细请见:http://exceptioneye.iteye.com/blog/1314958

配置如下:

<!-- 配置文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 文件上传最大5M -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>

⑤springmvc的参数绑定,设置handler(方法)的形参需要是:MultipartFile pictureFile   形参名必须是与input中的name保持一致

a.取上传文件的文件名:String filename = pictureFile.getOriginalFilename();

b.新建一个文件作为临时文件存到Tomcat指定的虚拟目录

//设置新文件名称,通过uuid
int lastIndexOf = filename.lastIndexOf(".");
String newFileName = null;
if(null != filename && lastIndexOf != -1){
newFileName = UUID.randomUUID().toString() + filename.substring(lastIndexOf);
}

E:/springmvcFileUpLoad/temp/
     注:该路径为指定的Tomcat的虚拟目录,filePath为 根据当前时间建立的文件夹,newFileName为新建的文件名包含后缀。

String filePath=new SimpleDateFormat("yy/MM/dd").format(new Date()).toString();  
File uploadPic = new File("E:/springmvcFileUpLoad/temp/"+ filePath + newFileName);
if(!uploadPic.exists()){
uploadPic.mkdirs();
}

c.将上传文件的内容拷贝到临时文件。

pictureFile.transferTo(uploadPic);

d.保存文件路径到数据库。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: