日期:2014-05-16  浏览次数:20398 次

ajax文件上传三种方式(支持批量)--struts2,jspServlet,springMVC
写了3个不同方式的文件上传,但是前台用的都是ajax的方式,采用的是jq的uploadify插件,关于这个插件的一些属性就不在这说了,可以去网上查询。附件里是struts2和jspServlet的2个demo工程,springMVC的demo不小心被我删了,所以这里只说下思路,使用非常方便。

springMVC方式上传:
页面和其他两种方式一样,不需要改动,主要是后台action,增加参数MultipartFile uploadify(spring会自动帮我们封装);
例如:action处理中的上传处理方法为
    @RequestMapping(method = RequestMethod.POST, params = "action=upload")
    public String doPost(ModelMap model, MultipartFile uploadify,BindingResult result) {
      //上传文件名,要考虑编码问题,ajax默认上传UTF-8
      String fileName = file.getOriginalFilename();
      //有了文件流和文件名,接下来怎么做就不多说了
       //。。。
}
这里有必要提一下的是,传参的问题,如果是动态传参,简单的说就是页面你填写的信息,要和文件一起上传,就是动态传参:
例如:
一般上传的onclick方法:
jQuery('#uploadify').uploadifyUpload();

动态传参的onclick方法:
$('#uploadify').uploadifySettings('scriptData',{'bizType':$('#bizType').val(),'providerCode':$('#providerCode').val(),'subProviderCode':$('#subProviderCode').val(),'budgetInst':$('#budgetInst').val(),'memo':$('#memo').val()});jQuery('#uploadify').uploadifyUpload()
简单的说,就是用uploadifySettings函数在提交之前注入了参数。

总的来说,这个功能很绚丽,如果前台显示不出来,除了是路径问题外,还有可能是flash没装,版本至少flash9吧
1 楼 warnerhit 2011-10-19  
能把你的SpringMVc的代码贴出来吗 急用,我的老提示上传错误! 谢了!
2 楼 warnerhit 2011-10-19  
最好是完整代码,前台和后台的
3 楼 dada_fangfang 2011-10-20  
哥们 你尝试着debug下,上面springMVC的例子file变量写错了,应该是uploadify,这是你上传的文件的流。有了文件流,你要怎么做都是可以的。你先定位下问题在哪吧,是在不行代码传上来,我帮你看看
4 楼 mzba520 2012-04-03  
楼主,麻烦贴一下你的springmvc代码,可以吗?
MultipartFile uploadify无法实例化。
Specified class is an interface
5 楼 seeYourEye 2012-04-10  
mzba520 写道
楼主,麻烦贴一下你的springmvc代码,可以吗?
MultipartFile uploadify无法实例化。
Specified class is an interface

org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface

我也遇到这个问题了,,,
6 楼 anmy123 2012-06-21  
看了一下,还不错,可以学习一下
7 楼 godwinx 2012-09-20  
能把spring mvc 的例子贴出来吗?