表單頁面代碼:
1.嵌入JS文件
<script src="formhelper_fileMem.js" language="JavaScript"></script>
formhelper_fileMem.js
function $_(id){return document.getElementById(id);}//Flash的初始化事件,當(dāng)Flash在瀏覽器已完全載入后將自動調(diào)用此腳本方法(如果存在的話)。//在此事件中可進(jìn)行相應(yīng)的初始化工作,比如設(shè)置上傳文件的地址、允許上傳的文件類型等。function FileUploader_onInit(){var o = $_('FileUploader');o.setUploadFileType("圖片文件(*.jpg,*.bmp,*.doc)|*.jpg;*.bmp;*.doc");o.setUploadFileUrl("http://localhost:7001/formhelper/upload.jsp");o.setMaxFileSize(-1);}//當(dāng)Flash出現(xiàn)錯誤時(如上傳文件)將觸發(fā)此事件function FileUploader_onError(error){alert("出現(xiàn)錯誤,錯誤信息為:" + error);var o = $_('FileUploader');o.resetUpload();}//當(dāng)正在上傳文件數(shù)據(jù)時將觸發(fā)此事件,通過此事件中的兩個參數(shù)可計算得知當(dāng)前的上傳進(jìn)度。//total : 返回的是當(dāng)前正在上傳文件的總大小,單位是:字節(jié)//size : 返回的是共已上傳到服務(wù)器的文件數(shù)據(jù)大小,單位是:字節(jié)function FileUploader_onUploading(total,size){var o = $_('per');o.style.width = (size / total * 500) + "px";o.innerText = Math.round((size / total * 100),2) + "%";}//當(dāng)Flash已將所有文件數(shù)據(jù)上傳到服務(wù)端時(服務(wù)端不一定已接收完數(shù)據(jù))將觸發(fā)此事件。//file : 已上傳的文件對象,擁有兩個屬性//file.name : 文件名(不帶任何路徑)//file.size : 文件大小,單位:字節(jié)function FileUploader_onSendComplete(file){alert("客戶端已發(fā)送完文件的數(shù)據(jù),文件名" + file.name + ",大小:" + file.size);}//當(dāng)Flash已上傳完數(shù)據(jù)并服務(wù)器已接收完數(shù)據(jù)時將觸發(fā)此事件。function FileUploader_onUploadComplete(data){alert("上傳文件完成,服務(wù)器返回數(shù)據(jù):" + data);$_('FileUploader').resetUpload();}
2.表單嵌入的FLASH控件
<tr><td><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"id="FileUploader" width="100%" height="80"codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"><param name="movie" value="FileUploader.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="allowScriptAccess" value="sameDomain" /><embed src="FileUploader.swf" quality="high" bgcolor="#ffffff"width="100%" height="100%" name="FileUploader" align="middle"play="true"loop="false"quality="high"allowScriptAccess="sameDomain"type="application/x-shockwave-flash"pluginspage="http://www.adobe.com/go/getflashplayer"></embed></object></td></tr>
3.對象的方法
附:對象方法1)setUploadFileUrl(url)設(shè)置接收上傳文件數(shù)據(jù)的地址。url : 路徑地址。2) setUploadFileType(exts)設(shè)置允許選擇的文件類型。exts: 文件類型列表,格式為“描述|類型列表(使用“;”號隔開)”,如果需要設(shè)置多種類型可連續(xù)設(shè)置。如:"文本文件(*.txt)|*.txt|圖片文件(*.jpg,*.bmp,*.png)|*.jpg;*.bmp;*.png|所有文件(*.*)|*.*"3) setMaxFileSize(size)設(shè)置最大允許上傳的文件大小,單位是"字節(jié)",如果設(shè)置為"-1"則表示不限制大小!如果選擇的文件已超出此值,將自動觸發(fā)onError事件,并返回"文件大小已超出限制范圍"錯誤信息.4)setBgColor(color)設(shè)置Flash的背景顏色。color : 可接受已知顏色的名稱或以#開頭的16進(jìn)制顏色值5)setButtonColor(color)設(shè)置上傳按鈕的背景顏色。color : 可接受已知顏色的名稱或以#開頭的16進(jìn)制顏色值6)setButtonText(text)設(shè)置上傳按鈕的文本,上傳按鈕的文本默認(rèn)為“上傳本地文件”。text : 字符串7)setProgressBarColor(color)設(shè)置上傳進(jìn)度條的顏色。color : 可接受已知顏色的名稱或以#開頭的16進(jìn)制顏色值8)setProgressBarBgColor(color)設(shè)置上傳進(jìn)度條的背景顏色。color : 可接受已知顏色的名稱或以#開頭的16進(jìn)制顏色值9)selectLocalFile()彈出選擇文件窗口,并確定選擇文件后自動將文件上傳到服務(wù)器!此方法可代替Flash中上傳按鈕的點擊。10)resetUpload()重設(shè)置Flash的上傳界面,當(dāng)Flash上傳文件后默認(rèn)的上傳按鈕已被隱藏,顯示的則是一條上傳進(jìn)度條。
4.upload.jsp
<%@ page import="org.apache.commons.fileupload.*"%><%@ page import="java.text.SimpleDateFormat"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%><%String temp=request.getRealPath("/")+"\\files\\"; //臨時目錄String loadpath=request.getRealPath("/")+"\\files\\"; //上傳文件存放目錄request.setCharacterEncoding("utf-8");DiskFileUpload fu = new DiskFileUpload();fu.setSizeMax(1*1024*1024); // 設(shè)置允許用戶上傳文件大小,單位:字節(jié)fu.setSizeThreshold(40); // 設(shè)置最多只允許在內(nèi)存中存儲的數(shù)據(jù),單位:字節(jié)fu.setRepositoryPath(temp); // 設(shè)置一旦文件大小超過getSizeThreshold()的值時數(shù)據(jù)存放在硬盤的目錄List fileItems = fu.parseRequest(request);Iterator iter = fileItems.iterator(); // 依次處理每個上傳的文件while (iter.hasNext()) {FileItem item = (FileItem) iter.next();// 忽略其他不是文件域的所有表單信息if (!item.isFormField()) {String name = item.getName();//獲取上傳文件名,包括路徑name=name.substring(name.lastIndexOf("\\")+1);//從全路徑中提取文件名long size = item.getSize();if((name==null||name.equals("")) && size==0)continue;SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String newName=sdf.format(new Date());File fNew= new File(loadpath, newName+name);item.write(fNew);String trance = "/files/"+newName+name;String returnStr="<tr id='"+newName+"'><td class='style6'><a href='"+trance+"' target='_blank'>"+name+"</a></td><td class='style6'>"+fileType+"</td><td class='style6'><a href='#'><img src='/commons/menu/del.gif' border='0'></a></td></tr>";response.setContentType("text/html;charset=utf-8");out.println(returnStr); //返回給 onUploadComplete}}%>
注:該flash下載地址 http://www.sj98.com/xwzj/ps/flash/200810/2097.html