fastupload-springmvc 0.5.5 发布 - 开源中国社区
Float_left Icon_close
fastupload-springmvc 0.5.5 发布
仪山湖 2013年04月15日

fastupload-springmvc 0.5.5 发布

仪山湖 仪山湖 发布于2013年04月15日 收藏 37 评论 8

阿里云高性能云服务器,2折起! >>> >>>  

fastupload-springmvc是利用fastupload开源组件Spring MVC框架写的文件上传插件,使用此插件,能在Controller中以注解的方式来获取上传的文件,然后对其进行操作。比使用fastupload核心API更加简洁。使用方式如下:

在pom.xml文件中加入fastupload-springmvc的依赖,因Spring MVC框架本身只到3.1.0才支持非文件类型的MultipartFile,所以使用此插件,最好是基于Spring MVC 3.1.0或者更高版本做开发

<dependency>
    <groupId>net.sf.fastupload</groupId>
    <artifactId>fastupload-springmvc</artifactId>
    <version>0.5.5</version>
</dependency>

 

在spring mvc的配置文件中增加FastuploadResolver Bean定义,这里使用注解的方式,使用XML配置文件与此类似,bean的名称和属性是一样的

 

@Bean(name = "multipartResolver")
	public MultipartResolver getMultipartResolver() {
		FastuploadResolver fastuploadResolver = new FastuploadResolver();
		// 1, set the max content length of HTTP request
		fastuploadResolver.setMaxContentLength(2000000);
		// 2, limit 1M size for a file
		fastuploadResolver.setThreshold(1024 * 1024);
		// 3, FastuploadResolver don't use temporary repository in default. It
		// use the WEB APP tmp directory define in Spring MVC when set the
		// property as true. but you can set the tmp dirctory via
		// <em>setTempRepository(String repository)</em> method
		fastuploadResolver.setUseTempRepository(false);
		return fastuploadResolver;
	}

上面的代码处1,设置HTTP请求总长度不超过2000000,代码处2,限制文件不超过1M,代码处3,使用内存解析模式,如果设置了使用磁盘解析模式,此属性设置为true,也可以指定临时文件的存放路径,不指定的情况下,使用当前Spring MVC WEB APP的默认临时目录。

 

最后,写一个Controller测试,这里有一点需要强调,Fastupload插件是支持非文件类型数据的

 

@Controller
public class UploadController {

	@RequestMapping(value = "/upload", method = { RequestMethod.POST })
	@ResponseBody
	public String upload(@RequestParam("desc") String desc,
			@RequestParam("file") MultipartFile file) {
		 
		/*
		 * use the <em>file</em> object directly
		 */
		return (desc != null && !file.isEmpty()) ? "success" : "failure";
	}
}

至此,在Spring MVC中使用fastupload的Controller代码变得清静了。

 

项目地址:https://sourceforge.net/projects/fastupload/

完整的demo:http://sourceforge.net/projects/fastupload/files/net.sf.fastupload.multipart.resolver-demo.zip/download,下载后,使用mvn jetty:run启动web服务器,然后在浏览器中输入http://localhost:8080/resources/file.html

@仪山湖

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:fastupload-springmvc 0.5.5 发布
分享
评论(8)
最新评论
0
用Spring注解方式获取文件,比如@RequestParam("file") MultipartFile file,在执行controller时,文件其实已经被Spring MVC框架解析过,注入到controller参数,因此,用注解的方式,无法正确的获得上传进度,如果想知道进度,必须使用fastupload-core的API,并且在spring的上下文中去掉multipartresolver这个bean
0
@仪山湖   
这个demo我如何获取当前上传进度呢?
0

引用来自“光头程序员”的评论

引用来自“仪山湖”的评论

引用来自“光头程序员”的评论

上传进度客户端自己不问服务器端也知道吧?

上传进度其实是客户端poll服务器端,因为经过spring mvc框架的处理,文件已经上传成功了,所以想知道进度必须使用fastupload-core API

不过我还是觉得客户端自己就应该知道,像各种flash上传插件

富客户端是能知道向服务器发送了多少字节的,但HTML没办法知道。也许以后的HTML6会支持这个功能吧
0

引用来自“仪山湖”的评论

引用来自“光头程序员”的评论

上传进度客户端自己不问服务器端也知道吧?

上传进度其实是客户端poll服务器端,因为经过spring mvc框架的处理,文件已经上传成功了,所以想知道进度必须使用fastupload-core API

不过我还是觉得客户端自己就应该知道,像各种flash上传插件
0

引用来自“光头程序员”的评论

上传进度客户端自己不问服务器端也知道吧?

上传进度其实是客户端poll服务器端,因为经过spring mvc框架的处理,文件已经上传成功了,所以想知道进度必须使用fastupload-core API
0
期待已久,嘻嘻
0
上传进度客户端自己不问服务器端也知道吧?
0
有上传进度?
顶部