写了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吧
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吧