Java tutorial
/* * Copyright (C) 2010---2014 (wuweixing)<349446658@qq.com> * * This file is part of Wabacus * * Wabacus is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.wabacus.system.fileupload; import java.io.File; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import com.wabacus.config.Config; import com.wabacus.config.component.application.report.ReportBean; import com.wabacus.config.component.container.page.PageBean; import com.wabacus.exception.WabacusRuntimeException; import com.wabacus.system.assistant.FilePathAssistant; import com.wabacus.system.assistant.WabacusAssistant; import com.wabacus.system.inputbox.FileBox; import com.wabacus.system.intercept.AbsFileUploadInterceptor; import com.wabacus.system.serveraction.CommonServerAction; import com.wabacus.util.Tools; public class FileInputBoxUpload extends AbsFileUpload { public FileInputBoxUpload(HttpServletRequest request) { super(request); } public void showUploadForm(PrintWriter out) { String pageid = getRequestString("PAGEID", ""); String reportid = getRequestString("REPORTID", ""); String inputboxid = getRequestString("INPUTBOXID", ""); PageBean pbean = Config.getInstance().getPageBean(pageid); if (pbean == null) { throw new WabacusRuntimeException("?ID" + pageid + "?"); } ReportBean rbean = pbean.getReportChild(reportid, true); if (rbean == null) { throw new WabacusRuntimeException( "ID" + pageid + "??ID" + reportid + ""); } String boxid = inputboxid; int idx = boxid.lastIndexOf("__"); if (idx > 0) { boxid = boxid.substring(0, idx); } FileBox fileboxObj = rbean.getUploadFileBox(boxid); if (fileboxObj == null) { throw new WabacusRuntimeException( "" + rbean.getPath() + "??ID" + boxid + ""); } String parentWindowName; if (Config.getInstance().getSystemConfigValue("prompt-dialog-type", "artdialog").equals("artdialog")) { out.print("<script type=\"text/javascript\" src=\"" + Config.webroot + "webresources/component/artDialog/artDialog.js\"></script>"); out.print("<script type=\"text/javascript\" src=\"" + Config.webroot + "webresources/component/artDialog/plugins/iframeTools.js\"></script>"); parentWindowName = "artDialog.open.origin"; } else { parentWindowName = "parent"; } out.print("<input type='hidden' name='INPUTBOXID' value='" + inputboxid + "'/>"); out.print("<input type='hidden' name='PAGEID' value='" + pageid + "'/>"); out.print("<input type='hidden' name='REPORTID' value='" + reportid + "'/>"); Map<String, String> mFormFieldValues = (Map<String, String>) request .getAttribute("WX_FILE_UPLOAD_FIELDVALUES"); showDynParamHiddenFields(mFormFieldValues, fileboxObj.getLstParamNamesInUrl(), out); boolean flag = true; if (fileboxObj.getInterceptor() != null) { flag = fileboxObj.getInterceptor().beforeDisplayFileUploadInterface(request, mFormFieldValues, out); } if (flag) { out.print(displayFileUpload(fileboxObj.getUploadcount(), fileboxObj.getAllowTypes(), fileboxObj.getDisallowtypes())); String oldvalue = getRequestString("OLDVALUE", ""); StringBuilder buf = new StringBuilder(); if (fileboxObj.getDeletetype() > 0 && !Tools.isEmpty(oldvalue)) { buf.append(" <input type=\"button\" class=\"cls-button\" value=\"\""); buf.append(" onclick=\"" + parentWindowName + ".setPopUpBoxValueToParent('','"); buf.append(inputboxid + "');"); if (fileboxObj.getDeletetype() > 1) {// buf.append( parentWindowName + ".invokeServerAction('" + CommonServerAction.class.getName() + "'"); buf.append(",{ACTIONTYPE:'deleteuploadfile',DELETEFILES:'" + oldvalue + "',INPUTBOXID:'" + inputboxid + "'"); buf.append(",PAGEID:'" + pageid + "',REPORTID:'" + reportid + "'}"); buf.append(",deleteUploadFilesInvokeCallback,null)"); } buf.append("\"/>"); buf.append("</td></tr></table>"); } out.print(buf.toString()); } } private void showDynParamHiddenFields(Map<String, String> mFormFieldValues, List<String> lstParamNamesInUrl, PrintWriter out) { String oldvalue = null; if (mFormFieldValues != null) { oldvalue = mFormFieldValues.get("OLDVALUE"); } else { oldvalue = request.getParameter("OLDVALUE"); } if (oldvalue != null && !oldvalue.trim().equals("")) { out.print("<input type=\"hidden\" name=\"OLDVALUE\" value=\"" + oldvalue.trim() + "\"/>"); } if (lstParamNamesInUrl == null || lstParamNamesInUrl.size() == 0) return; String paramvalueTmp; for (String paramnameTmp : lstParamNamesInUrl) { if (mFormFieldValues != null) { paramvalueTmp = mFormFieldValues.get(paramnameTmp); } else { paramvalueTmp = request.getParameter(paramnameTmp); } if (paramvalueTmp != null && !paramvalueTmp.trim().equals("")) { out.print("<input type=\"hidden\" name=\"" + paramnameTmp + "\" value=\"" + paramvalueTmp + "\"/>"); } } } public String doFileUpload(List lstFieldItems, PrintWriter out) { String pageid = mFormFieldValues.get("PAGEID"); String reportid = mFormFieldValues.get("REPORTID"); String inputboxid = mFormFieldValues.get("INPUTBOXID"); pageid = pageid == null ? "" : pageid.trim(); inputboxid = inputboxid == null ? "" : inputboxid.trim(); PageBean pbean = Config.getInstance().getPageBean(pageid); if (pbean == null) { throw new WabacusRuntimeException("?ID" + pageid + "?"); } ReportBean rbean = pbean.getReportChild(reportid, true); if (rbean == null) { throw new WabacusRuntimeException( "ID" + pageid + "??ID" + reportid + ""); } mFormFieldValues.put(AbsFileUploadInterceptor.REPORTID_KEY, reportid); String boxid = inputboxid; int idx = boxid.lastIndexOf("__"); if (idx > 0) { boxid = boxid.substring(0, idx); } FileBox fileboxObj = rbean.getUploadFileBox(boxid); if (fileboxObj == null) { throw new WabacusRuntimeException( "" + rbean.getPath() + "??ID" + boxid + ""); } this.interceptorObj = fileboxObj.getInterceptor(); out.println(fileboxObj.createSelectOkFunction(inputboxid, false)); String configAllowTypes = fileboxObj.getAllowTypes(); if (configAllowTypes == null) configAllowTypes = ""; List<String> lstConfigAllowTypes = getFileSuffixList(configAllowTypes); String configDisallowTypes = fileboxObj.getDisallowtypes(); if (configDisallowTypes == null) configDisallowTypes = ""; List<String> lstConfigDisallowTypes = getFileSuffixList(configDisallowTypes); String savepath = WabacusAssistant.getInstance().parseAndGetRealValue(request, fileboxObj.getSavePath(), ""); String newfilename = WabacusAssistant.getInstance().parseAndGetRealValue(request, fileboxObj.getNewfilename(), ""); String rooturl = WabacusAssistant.getInstance().parseAndGetRealValue(request, fileboxObj.getRooturl(), ""); String seperator = fileboxObj.getSeperator(); if (Tools.isEmpty(seperator)) seperator = ";"; String allSaveValues = "", saveValueTmp; boolean existUploadFile = false; List<String> lstDestFileNames = new ArrayList<String>(); FileItem item; for (Object itemObj : lstFieldItems) { item = (FileItem) itemObj; if (item.isFormField()) continue; String orginalFilename = item.getName(); if ((orginalFilename == null || orginalFilename.equals(""))) continue; orginalFilename = getFileNameFromAbsolutePath(orginalFilename); if (orginalFilename.equals("")) return "??";//?? mFormFieldValues.put(AbsFileUploadInterceptor.ALLOWTYPES_KEY, configAllowTypes); mFormFieldValues.put(AbsFileUploadInterceptor.DISALLOWTYPES_KEY, configDisallowTypes); mFormFieldValues.put(AbsFileUploadInterceptor.MAXSIZE_KEY, String.valueOf(fileboxObj.getMaxsize())); mFormFieldValues.put(AbsFileUploadInterceptor.FILENAME_KEY, getSaveFileName(orginalFilename, newfilename)); mFormFieldValues.put(AbsFileUploadInterceptor.SAVEPATH_KEY, savepath); mFormFieldValues.put(AbsFileUploadInterceptor.ROOTURL_KEY, rooturl); boolean shouldUpload = interceptorObj != null ? interceptorObj.beforeFileUpload(request, item, mFormFieldValues, out) : true; if (shouldUpload) { getRealUploadFileName(lstDestFileNames, orginalFilename); String errorMessage = doUploadFileAction(item, mFormFieldValues, orginalFilename, configAllowTypes, lstConfigAllowTypes, configDisallowTypes, lstConfigDisallowTypes); if (errorMessage != null && !errorMessage.trim().equals("")) return errorMessage; } existUploadFile = true; saveValueTmp = getSaveValue(); if (!Tools.isEmpty(saveValueTmp)) allSaveValues += saveValueTmp + seperator; } if (!existUploadFile) return "?!"; if (allSaveValues.endsWith(seperator)) allSaveValues = allSaveValues.substring(0, allSaveValues.length() - seperator.length()); out.print("<script language='javascript'>"); out.print("selectOK('" + allSaveValues + "',null,null,false);"); out.print("</script>"); return null; } private String getSaveValue() { String savevalue = mFormFieldValues.get(AbsFileUploadInterceptor.SAVEVALUE_KEY); if (savevalue == null) { String destfilenameTmp = mFormFieldValues.get(AbsFileUploadInterceptor.FILENAME_KEY); String rooturlTmp = mFormFieldValues.get(AbsFileUploadInterceptor.ROOTURL_KEY); String savepathTmp = mFormFieldValues.get(AbsFileUploadInterceptor.SAVEPATH_KEY); if (Tools.isEmpty(rooturlTmp) && Tools.isEmpty(savepathTmp)) { savevalue = destfilenameTmp; } else if (Tools.isEmpty(rooturlTmp)) { savevalue = FilePathAssistant.getInstance() .standardFilePath(savepathTmp + File.separator + destfilenameTmp); } else { if (!rooturlTmp.endsWith("/")) rooturlTmp += "/"; savevalue = rooturlTmp + destfilenameTmp; } } if (savevalue == null) savevalue = ""; StringBuilder pathBuf = new StringBuilder(); for (int i = 0; i < savevalue.length(); i++) { if (savevalue.charAt(i) == '\\') { pathBuf.append("\\\\"); } else { pathBuf.append(savevalue.charAt(i)); } } return pathBuf.toString(); } public void promptSuccess(PrintWriter out, boolean isArtDialog) { if (isArtDialog) {//artdialog?? out.println("artDialog.open.origin.wx_success('?');"); out.println("art.dialog.close();"); } else { out.println("parent.wx_success('?');"); out.println("parent.closePopupWin();"); } } }