一 : applicationContext.xml中:必须声明不然获取不到 <!-- 上传文件的配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1024000"></property> <property name="defaultEncoding" value="utf-8"/><!--属性:编码--> </bean> 二 : 前台jsp页面 <!-- //存放选择文件的 图片按钮的 Div --> <div id="uploadfileQueue"></div> <input type="file" id="file_upload"> <img id="add_img" width="100" height="100"/> <input type="text" name="user_img" > 三 : js代码: $(document).ready(function() { $("#file_upload").uploadify({ //是否自动上传 true or false 'auto':true, //超时时间上传成功后,将等待服务器的响应时间。 //在此时间后,若服务器未响应,则默认为成功(因为已经上传,等待服务器的响应) 单位:秒 'successTimeout':99999, //附带值 JSON对象数据,将与每个文件一起发送至服务器端。 //如果为动态值,请在onUploadStart()中使用settings()方法更改该JSON值 /* 'formData':{ //可以不写 'user.username':'', 'user.age':'' }, */ 'onUploadStart': function(file) { $("#file_upload").uploadify( "settings" ); /* {'user.username':name,'user.age':age});*/ }, //flash 'swf': "<%=request.getContextPath()%>/uploadify/uploadify.swf", //文件选择后的容器div的id值 'queueID':'uploadfileQueue', //将要上传的文件对象的名称 必须与后台controller中抓取的文件名保持一致 'fileObjName':'headerImage', //上传地址访问后台action路径 'uploader':'<%=request.getContextPath()%>/photosAction/uploadFile.do', //浏览将要上传文件按钮的背景图片路径 //'buttonImage':'<%=request.getContextPath()%>/uplodify/background.jpg', //浏览按钮的宽度 'width':'100', //浏览按钮的高度 'height':'32', //在浏览窗口底部的文件类型下拉菜单中显示的文本 'fileTypeDesc':'支持的格式:', //允许上传的文件后缀 'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png', //有哪些?? /*上传文件的大小限制允许上传文件的最大 大小。 这个值可以是一个数字或字 符串。 如果它是一个字符串,它接受一个单位(B, KB, MB, or GB)。 默认单位为KB您可以将此值设置为0 ,没有限制, 单个文件不允许超过所设置的值 如果超过 onSelectError时间被触发*/ 'fileSizeLimit':'1024KB', 'buttonText': '上传头像', //允许上传的文件的最大数量。当达到或超过这个数字,onSelectError事件被触发。 'queueSizeLimit' : -1, //选择上传文件后调用 'onSelect' : function(file) { // alert("123"); }, //返回一个错误,选择文件的时候触发 'onSelectError':function(file, errorCode, errorMsg){ switch(errorCode) { case -100: alert("上传的文件数量已经超出系统限制的" +$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!"); break; case -110: alert("文件 ["+file.name+"] 大小超出系统限制的" +$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!"); break; case -120: alert("文件 ["+file.name+"] 大小异常!"); break; case -130: alert("文件 ["+file.name+"] 类型不正确!"); break; } }, //上传到服务器,服务器返回相应信息到data里 'onUploadSuccess':function(file, data, response){ //alert(data); $("#add_img").attr("src","<%=request.getContextPath()%>/"+data) //alert("<%=request.getContextPath()%>/"+data) $("[name='user_img']").val(data) }, //当单个文件上传出错时触发 'onUploadError': function (file, errorCode, errorMsg, errorString) { alert("上传失败"); } }); }); 四 ; controller: @RequestMapping(value="/uploadFile",method=RequestMethod.POST) @ResponseBody public void uploadFile(@RequestParam("headerImage")CommonsMultipartFile headerImage,HttpServletRequest req,HttpServletResponse response) throws IOException{ String path = FileUtil.upFile(headerImage,req,response,"pppp"); try { response.setCharacterEncoding("utf-8"); response.getWriter().write(path); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 注意:有时候需要使用到File类型的文件 那么就需要将CommonsMultipartFile 类型的转换为 File类型的 DiskFileItem fi = (DiskFileItem)image.getFileItem(); File file = fi.getStoreLocation(); 二 : 使用MultipartFile上传文件(多文件) Controller层: @RequestMapping("filesUpload") public String filesUpload(@RequestParam("files") MultipartFile[] files) { //判断file数组不能为空并且长度大于0 if(files!=null&&files.length>0){ //循环获取file数组中得文件 for(int i = 0;i<files.length;i++){ MultipartFile file = files[i]; //保存文件 saveFile(file); } } // 重定向 return "redirect:/list.html"; } 上传文件 private boolean saveFile(MultipartFile file) { // 判断文件是否为空 if (!file.isEmpty()) { try { // 文件保存路径 String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/" + file.getOriginalFilename(); // 转存文件 file.transferTo(new File(filePath)); return true; } catch (Exception e) { e.printStackTrace(); } } return false; }
MultipartFile(文件的上传)--CommonsMultipartResolver
猜你喜欢
转载自www.cnblogs.com/gaomanito/p/10322714.html
今日推荐
周排行