Re: Unable to open uploaded pdf and docx file
Dear Lukasz, Any advice will be greatly appreciated. Thank you. Regards Mahabir On Thu, Mar 14, 2024 at 5:03 PM Mahabir Gupta wrote: > Dear Lukasz, > > This issue came after I upgraded from Struts 2.5 to Struts 6.0.3.2. The > .pdf and .docx files seem to be corrupted when I am trying to download the > files. Kindly advise. Thank you. > > Regards > Mahabir > > On Thu, Mar 14, 2024 at 1:38 PM Mahabir Gupta > wrote: > >> Dear Lukasz, >> >> I am able to upload and download and open .txt file but for .pdf and >> .docx files, I am able to upload but when I download the pdf file, the file >> cannot be opened. For the .docx file when I try to click on the file, on >> the console it does show the log successfully download attachment file but >> on the frontend an error "System is unable to proceed with your request." >> is being displayed. >> >> public class getDotsMissionAction { >> >> public void downloadAttach(){ >> try { >> String filename = >> DotsFormUtil.cleanStringFile(request.getParameter("filename"));t >> String realname = >> DotsFormUtil.cleanStringFile(request.getParameter("name")); >> >> HttpSession session = (HttpSession) request.getSession(); >> String strDotsIdToken = (String) >> session.getAttribute("strDotsIdToken"); >> >> try{ >> if(strDotsIdToken == null || >> !strDotsIdToken.equals(filename.split("_")[0])) >> logger.error("strDotsIdToken is null or strDotsIdToken >> is not equal and Exception is thrown"); >> }catch (Exception e){ >> logger.info(e); >> } >> try { >> if(filename!= null){ >> try { >> ResourceBundle bundle = >> ResourceBundle.getBundle("resources.dotsDisplay"); >> String >> strDirectory=DotsFormUtil.cleanpString(bundle.getString("dots.attachments.path")); >> File f= new >> File(FilenameUtils.normalize(DotsFormUtil.cleanString(strDirectory+File.separator >> + filename))); >> String pattern = >> "[a-zA-Z0-9]{1,50}\\.[a-zA-Z0-9]{1,10}"; >> if(realname.matches(pattern)){ >> response.reset(); >> response.setCharacterEncoding("UTF-8"); >> response.setContentType("application/pdf"); >> >> response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); >> >> response.setHeader("Content-Disposition","attachment; fileName=" +realname); >> } >> try ( >> OutputStream out2 = response.getOutputStream()){ >> Files.copy(f,out2); >> out2.flush(); >> } >> } catch (FileNotFoundException e){ >> e.printStackTrace(); >> logger.error(e.getMessage()); >> } >> } >> }catch (FileNotFoundException e){ >> e.printStackTrace(); >> logger.error(e.getMessage()); >> } >> logger.info("successfully download attachment file"); >> }catch (FileNotFoundException e){ >> e.printStackTrace(); >> logger.error(e.getMessage()); >> } >> } >> >> public static String cleanStringFile(String- aString){ >> if(aString==null) return null; >> String cleanString = ""; >> char cleanChar = '\0'; >> for(int i=0; i> cleanChar = cleanCharFile(aString.charAt(i)); >> if(cleanChar != '\0') cleanString+=cleanChar; >> } >> return cleanString; >> } >> >> private static char cleanCharFile(char aChar){ >> for(int i = 48; i<58; ++i){ >> if(aChar ==i) return (char) i; >> } >> for(int i = 65; i<91; ++i){ >> if(aChar ==i) return (char) i; >> } >> for(int i = 97; i<123; ++i){ >> if(aChar ==i) return (char) i; >> } >> >> switch (aChar){ >> case '.': >> return '.'; >> case '_': >> return '_'; >> case '-': >> return '-'; >> case '!': >> return '!'; >> } >> return '\0'; >> } >> >> >> This is my modified code >> >> public String downloadAttach() { >> HttpServletResponse response = ServletActionContext.getResponse(); >> try { >> String filename = >> DotsFormUtil.cleanStringFile(request.getParameter("filename"));t >> String realname = >> DotsFormUtil.cleanStringFile(request.getParameter("name")); >> >> HttpSession session = (HttpSession) request
Re: struts 2.5.33 - ERROR DefaultClassFinder - Unable to read class - IncompatibleClassChangeError
This looks like you have another version of the ASM library on the classpath https://stackoverflow.com/questions/16209623/incompatibleclasschangeerror-class-classmetadatareadingvisitor-has-interface-cl czw., 21 mar 2024 o 15:00 DAngel napisał(a): > > Hello, thanks for answering > > Before starting tomcat I delete the content inside the directories > "work" and "temp" > > > OGNL version: > WEB-INF/lib/ognl-3.1.29.jar > WEB-INF/lib/tiles-ognl-3.0.8.jar > > > The following is the error trace for an Action class > (the same thing is repeated for all Action classes) > > 10:34:20.402 [main] ERROR org.apache.struts2.convention.DefaultClassFinder > - Unable to read class [org.dlix.ui.actions.ListDetail] > java.lang.IncompatibleClassChangeError: class > org.apache.struts2.convention.DefaultClassFinder$InfoBuildingVisitor has > interface org.objectweb.asm.ClassVisitor as super class > at > org.apache.struts2.convention.DefaultClassFinder.readClassDef(DefaultClassFinder.java:462) > ~[struts2-convention-plugin-2.5.33.jar:2.5.33] > at > org.apache.struts2.convention.DefaultClassFinder.(DefaultClassFinder.java:93) > [struts2-convention-plugin-2.5.33.jar:2.5.33] > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildClassFinder(PackageBasedActionConfigBuilder.java:395) > [struts2-convention-plugin-2.5.33.jar:2.5.33] > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:377) > [struts2-convention-plugin-2.5.33.jar:2.5.33] > at > org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:333) > [struts2-convention-plugin-2.5.33.jar:2.5.33] > at > org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:52) > [struts2-convention-plugin-2.5.33.jar:2.5.33] > at > com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:206) > [struts2-core-2.5.33.jar:2.5.33] > at > com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66) > [struts2-core-2.5.33.jar:2.5.33] > at > org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:970) > [struts2-core-2.5.33.jar:2.5.33] > at > org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463) > [struts2-core-2.5.33.jar:2.5.33] > at > org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496) > [struts2-core-2.5.33.jar:2.5.33] > at > org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73) > [struts2-core-2.5.33.jar:2.5.33] > at > org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61) > [struts2-core-2.5.33.jar:2.5.33] > at > org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:262) > [catalina.jar:9.0.76] > at > org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:244) > [catalina.jar:9.0.76] > at > org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:97) > [catalina.jar:9.0.76] > at > org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4345) > [catalina.jar:9.0.76] > at > org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4972) > [catalina.jar:9.0.76] > at > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) > [catalina.jar:9.0.76] > at > org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683) > [catalina.jar:9.0.76] > at > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658) > [catalina.jar:9.0.76] > at > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:662) > [catalina.jar:9.0.76] > at > org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1023) > [catalina.jar:9.0.76] > at > org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1910) > [catalina.jar:9.0.76] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > [?:1.8.0_382] > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > [?:1.8.0_382] > at > org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) > [tomcat-util.jar:9.0.76] > at > java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) > [?:1.8.0_382] > at > org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:824) > [catalina.jar:9.0.76] > at > org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474) > [catalina.jar:9.0.76] > at > org.apache.catalina.startup.HostConfig.start(HostConfig.java:1617) > [catalina.jar:9.0.76] > at > org.apache.catalina.startup.HostCo