這篇文章主要講解了“Struts1.2怎么實(shí)現(xiàn)動(dòng)態(tài)多文件不定個(gè)數(shù)上傳”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Struts1.2怎么實(shí)現(xiàn)動(dòng)態(tài)多文件不定個(gè)數(shù)上傳”吧!
創(chuàng)新互聯(lián)建站-成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站營(yíng)銷推廣,域名與空間,虛擬空間,網(wǎng)站托管、服務(wù)器托管有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請(qǐng)聯(lián)系創(chuàng)新互聯(lián)建站。
Struts1.2依然是應(yīng)用很廣的框架,實(shí)現(xiàn)動(dòng)態(tài)多文件(不定個(gè)數(shù))上傳請(qǐng)先看下面的代碼
關(guān)鍵代碼
< SCRIPT language=javascript type=text/javascript > function createElement(tagName, type, name) { var element = null; try { element = document.createElement('<' + tagName + ' name="'+name+'" size=30 onchange="add();"/>'); element.type = type; element.value = value; } catch (e) { } if ( ! element) { element = document.createElement(tagName); element.setAttribute("type", type); } return element; } // 動(dòng)態(tài)創(chuàng)建表單控件的方法 var i = 1; function add() { // 動(dòng)態(tài)創(chuàng)建控件名稱 var name = "attachment" + i; var input1 = createElement("input", "file", name); var br = document.createElement(" "); var files = document.getElementById("files"); files.appendChild(br); files.appendChild(input1); i ++ ; } < /SCRIPT> < DIV id=files> < INPUT onchange=add(); alt=選擇后即可動(dòng)態(tài)添加文件域 size=30 type=file name=attachment0> < INPUT onclick=add(); value=多個(gè)附件 alt=手動(dòng)添加文件域 type=button > |
Action中的關(guān)鍵代碼:
FormFile[] formFile = null; // 得到所有的文件請(qǐng)求元素 Hashtable files = bbsForm.getMultipartRequestHandler() .getFileElements(); if (files != null && files.size() > 0) { // 初始化FormFile formFile = new FormFile[files.size()]; // 得到files的keys Enumeration enums = files.keys(); String fileKey = null; int i = 0; // 遍歷枚舉 while (enums.hasMoreElements()) { // 取得key fileKey = (String) (enums.nextElement()); System.out.println("key:" + fileKey); // 初始化每一個(gè)FormFile(接口) formFile[i] = (FormFile) files.get(fileKey); // 分別上傳 upload(formFile[i], request, bbs); i++; } |
upload方法:
/** *//** * 文件上傳的方法 * * @param file * @param request * @param bbs */ public void upload(FormFile file, HttpServletRequest request, Bbs bbs) { //只有選擇了文件時(shí)才上傳 if ("".equals(file.getFileName()) || null == file.getFileName()) { return ; } // 得到當(dāng)前網(wǎng)站的絕對(duì)路徑 String path = this.getServlet().getServletContext().getRealPath("/"); FileOutputStream fileOutput; try { // 文件操作 fileOutput = new FileOutputStream(path + "main/upload/" + file.getFileName()); fileOutput.write(file.getFileData()); fileOutput.flush(); fileOutput.close(); log.info("BbsAction:附件上傳成功"); } catch (FileNotFoundException e) { log.info("BbsAction:找不到文件"); } catch (IOException e) { log.info("BbsAction:文件IO異常"); } // 數(shù)據(jù)庫操作 Fileupload fileupload = new Fileupload(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/"; fileupload.setFilename(basePath + "/main/upload/" + file.getFileName()); // 得到文件的擴(kuò)展名 int point = file.getFileName().lastIndexOf("."); String ext = file.getFileName().substring(point + 1); //擴(kuò)展名處理 if ("jpg".equals(ext.toLowerCase()) || "bmp".equals(ext.toLowerCase()) || "gif".equals(ext.toLowerCase())) { ext = "img"; } if ("rar".equals(ext.toLowerCase()) || "zip".equals(ext.toLowerCase()) || "jar".equals(ext.toLowerCase())) { ext = "rar"; } if("txt".equals(ext.toLowerCase()) || "sql".equals(ext.toLowerCase()) || "ini".equals(ext.toLowerCase())) { ext = "txt"; } fileupload.setFileext(ext); fileupload.setFilesize(file.getFileSize()); fileupload.setUptime(new Date()); fileupload.setDowncount(0); fileupload.setUpuser(((User) request.getSession().getAttribute("user")) .getUserName()); fileupload.setFlag((short) 0); fileupload.setAnnounceId(bbs.getAnnounceId()); fileupload.setName(file.getFileName()); fileuploadManager.save(fileupload); log.info("BbsAction:附件信息已經(jīng)成功保存到數(shù)據(jù)庫"); }
這樣就實(shí)現(xiàn)的動(dòng)態(tài)的多文件上傳.關(guān)鍵還是
Hashtable files = bbsForm.getMultipartRequestHandler() .getFileElements(); |
的處理.
感謝各位的閱讀,以上就是“Struts1.2怎么實(shí)現(xiàn)動(dòng)態(tài)多文件不定個(gè)數(shù)上傳”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Struts1.2怎么實(shí)現(xiàn)動(dòng)態(tài)多文件不定個(gè)數(shù)上傳這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!