首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

bboss mvc资料上传下载新增功能详解

2012-07-26 
bboss mvc文件上传下载新增功能详解bboss mvc文件上传下载新增功能详解1.概述最近对bboss mvc的文件上传和

bboss mvc文件上传下载新增功能详解
bboss mvc文件上传下载新增功能详解

1.概述
最近对bboss mvc的文件上传和下载功能做了以下改造:
a.文件上传插件增加对html5文件上传功能的支持-application/octet-stream请求的处理
b.文件上传插件增加IgnoreFieldNameMultipartFile接口
c.文件下载
org.frameworkset.http.converter.FileMessageConvertor插件支持下载Resource接口对应的资源

下面详细介绍每一部分。

2.html5文件上传功能
html5文件上传时对应的mime类型可以为application/octet-stream,之前的文件上传插件是不支持application/octet-stream类型的附件的处理的,因此对上传插件进行修改从而支持这种类型的附件的处理,目前支持单次一个附件的处理,服务端的处理方式没有改变,请参考另外两篇附件处理的文章。为了测试该功能,在火狐浏览器下使用xheditor-1.1.13在线编辑器的文件上传实例demo08.html功来演示该功能,xheditor-1.1.13已经集成到bbossgroups的最佳实践工程demoproject中,对应的jsp文件为:
/demoproject/WebRoot/xheditor/demos/demo08.jsp
下载该demoproject导入eclipse并部署到tomcat在火狐浏览器中输入(xheditor自动将上传类型定义为application/octet-stream,ie还是以传统的form multidata方式提交)
http://localhost:8080/WebRoot/xheditor/demos/demo08.jsp即可点击里面的图片上传功能查看效果,这里我们只看看一下demo08.jsp中和文件上传相关的代码:



服务端处理方法为(\bestpractice\demoproject\src\org\frameworkset\mvc\FileController.java):

第二种方式就是本文介绍的方式,借助于新的IgnoreFieldNameMultipartFile接口来处理:
public @ResponseBody String upload(IgnoreFieldNameMultipartFile[] files,String testparam) throws IllegalStateException, IOException{if(filedata != null){filedata[0].transferTo(new File("d:/tst.png"));}return "{"err":"","msg":"tst.png"}";}

我们将附件参数files的类型指定为IgnoreFieldNameMultipartFile或者IgnoreFieldNameMultipartFile[],明确地告诉mvc忽略控制器方法参数或者bean属性与input file元素的name值进行名称映射绑定,直接将上传的附件对象作为控制器方法参数或bean属性的值注入,不管表单提交了多少个input file元素,只会将第一个input file元素的对应的附件或者附件数组注入到控制器方法参数或者bean属性中,这就是引入IgnoreFieldNameMultipartFile类型的目的,只要控制器方法参数或者bean属性的类型为IgnoreFieldNameMultipartFile,那么就按这个规则来进行控制器方法参数值或者bean属性值绑定。
4.org.frameworkset.http.converter.FileMessageConvertor插件支持下载Resource接口对应的资源
FileMessageConvertor插件除了任然支持File对象和Blob对象的下载外,新增了Resource类型资源的下载,包括以下类型:
ClassPathResource -- 适用于应classpath下面的各种资源
ServletContextResource --适用于web应用根目录及子目录下的各种资源
FileSystemResource --适用于文件系统中各种文件资源
UrlResource --适用于url连接对应各种资源
ByteArrayResource--适用于二进制资源

我们以ClassPathResource 为例来说明具体的使用方法如下:
public @ResponseBody
Resource exportExeclTemplate() throws Exception {

String fileName = "com/sany/mms/background/action/exceldata.xls";

ClassPathResource classpath = new ClassPathResource(fileName);
return classpath;
}

到此,各个部分介绍完毕,如果有不妥之处,欢迎大家批评指正。

热点排行