Re: Unable to open uploaded pdf and docx file

2024-03-24 Thread Mahabir Gupta
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

2024-03-24 Thread Lukasz Lenart
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