先是html代码: javascript
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>上传客户端软件</title> <script type="text/javascript"> $(document).ready(function(){ //初始化uploadify 用于word上传 $("#doc_upload").uploadify({ 'swf' : '/js/uploadify/uploadify.swf',//上传的flash文件,必用 'uploader' : '/upload.action;jsessionid=<%=request.getSession().hashCode()%>',//上传的请求URL //'script' : '/upload.action', 'method' : "post",//请求方式 //'folder' : 'upload',//设置上传文件夹 'cancelImage' : '/js/uploadify/uploadify-cancel.png',//设置取消的图片 'displayData' : 'speed',//进度条的显示方式 'fileObjName' : 'file',//与后台Action中file属性同样 'formData' : { 'folder' : '/upload/soft' },//附带值,参数 'queueID' : 'doc_pb',//进度条ID 'auto' : true,//自动上传 'multi' : false,//是否为多文件上传 'buttonImage':'/images/upload.png', 'button Text' : " 浏 览 ", 'uploadLimit' : 1,//一次能够上传多少个文件 'fileSizeLimit' : '100000KB',//单个文件上传最大值 'queueSizeLimit' : 1,//最多上传个数 successTimeout : 99999,//上传超时时间 'fileTypeDesc' : '支持格式:*.exe',//提示上传格式 'fileTypeExts' : '*.exe',//限制上传文件格式 'rollover' : true, 'removeCompleted' : false,//上传完成后是否自动隐藏进度条 //'debug' : true, progressData : "percentage",//显示上传的百分比 //上传到服务器,服务器返回相应信息到data里 onUploadSuccess : function(file,//每一个文件上传完成后都会调用一次,其中data为,相应信息,file为上传文件信息,response只有两个值true or false data, response) { //alert(response); //alert(file); //alert(data); $("#doc_path").val(data); }, //选择文件时出错 onSelectError : function(file, errorCode, errorMsg) { alert(errorMsg); }, onError : function(errorObj) { alert(errorObj.info + " " + errorObj.type); } }); }); function navTabAjaxDone(json){ //DWZ.ajaxDone(json); if (json.statusCode == DWZ.statusCode.ok){ if ("queryData"){ //把指定navTab页面标记为须要“从新载入”。注意navTabId不能是当前navTab页面的 navTab.reloadFlag("lastestVersion"); } else { //从新载入当前navTab页面 navTabPageBreak(); } if ("closeCurrent" == json.callbackType) { setTimeout(function(){navTab.closeCurrentTab();}, 100); } else if ("forward" == json.callbackType) { navTab.reload(json.forwardUrl); } } } </script> </head> <body> <form enctype="multipart/form-data" action="/updateVersion" method="post" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone);"> <input id="doc_path" name="path" type="hidden" > <div class="pageFormContent nowrap" layoutH="56"> <dl><dt>版 本 号:</dt><dd><input name="versionNum" type="text" class="required"></dd></dl> <dl><dt>上传软件:</dt><dd><input type="file" name="doc" id="doc_upload" > <div id="doc_pb"></div></dd></dl> <div class="formBar" style="margin-top: 600px"> <ul> <!--<li><a class="buttonActive" href="javascript:;"><span>保存</span></a></li>--> <li><div class="buttonActive"> <div class="buttonContent"> <button type="submit">保存</button> </div> </div></li> <li> <div class="button"> <div class="buttonContent"> <button type="button" class="close">取消</button> </div> </div> </li> </ul> </div> </div> </form> </body> </html>而后是后台的action,这里只提供的action对应的方法
/** 文件 **/ private File file; html
/** 文件名 **/ private String fileFileName; java
/** 文件类型 **/ private String fileContentType; ajax
/** 文件保存路径 **/ private String folder; json
/** * 上传文件 * * @return */ public String upload() { // System.out.println(TransUtil.getSha1(file)); String realPath = ServletActionContext.getServletContext().getRealPath( folder);// 获取文件保存物理路径 if (file != null) { final String saveName = TransUtil.renameFileName(realPath, fileFileName.replaceAll(" ", "_")); final File saveFile = new File(new File(realPath), saveName); if (!saveFile.getParentFile().exists()) { saveFile.getParentFile().mkdirs(); } try { // System.out.println("有没有通过这里?"); FileUtils.copyFile(file, saveFile); HttpServletResponse response = ServletActionContext .getResponse(); response.setCharacterEncoding("UTF-8"); response.getWriter().write(folder + "/" + saveName);// 返回文件地址 // System.out.println(TransUtil.getSha1(saveFile)); } catch (IOException e) { e.printStackTrace(); System.out.println("上传文件失败"); } } return null; }