Could you check if this example works for you?
https://github.com/apache/struts-examples/tree/main/file-upload

wt., 13 maj 2025 o 08:28 Zoran Avtarovski <zo...@sparecreative.com> napisał(a):
>
> Hi Lukasz,
>
> That's what I thought initially, but we only use the spring plugin for
> dependency injection and the tomcat changes seem to happen much earlier
> in the request cycle.
>
> I was wondering if any of the interceptors in the defaultStack might be
> making a change. I was being lazy and hoping someone might have noticed
> something similar, but we will add some extra logging at each stage of
> the interceptor stack to check the instance type of the request to see
> where it changes.
>
> Z.
>
>
>
> On 13/5/2025 3:38 pm, Lukasz Lenart wrote:
> > What else do you use? Spring, Tomcat? It looks like something is
> > changing the type of MultiPartRequestWrapper between Dispatcher and
> > interceptors, mayb the request is wrapped with another proxy?
> >
> > wt., 13 maj 2025 o 01:48 Zoran Avtarovski<zo...@sparecreative.com> 
> > napisał(a):
> >> Hi Guys,
> >>
> >> We have started migrating our apps to 6.7.4 and have run into an issue
> >> with file uploads. We have migrated our actions to use the new
> >> ActionFileUploadInterceptor but we are seeing an issue where the upload
> >> requests are being incorrectly bypassed.
> >>
> >> I have reduced it to a simple example which I will include at the end
> >> but the key bits are the debug logs from struts. We are seeing the
> >> request processed correctly, except for the last step where the upload
> >> is bypassed:
> >>
> >> dispatcher.Dispatcher (Dispatcher.java:1054) - Support for multipart 
> >> request is enabled: true
> >> dispatcher.Dispatcher (Dispatcher.java:1072) - Validating if this is a 
> >> proper Multipart request. Request is POST: true and ContentType matches 
> >> pattern 
> >> (^multipart/form-data(?:\s*;\s*boundary=[0-9a-zA-Z'"()+_,\-./:=?]{1,70})?(?:\s*;\s*charset=[a-zA-Z\-0-9]{3,14})?):
> >>  true
> >> dispatcher.Dispatcher (Dispatcher.java:1030) - Wrapping multipart request 
> >> with: MultiPartRequestWrapper
> >>
> >> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:105) - 
> >> Found file item: [document]
> >> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:116) - 
> >> Item is a file upload
> >>
> >> interceptor.FileUploadInterceptor (FileUploadInterceptor.java:197) - 
> >> Bypassing /action/...
> >> interceptor.ActionFileUploadInterceptor 
> >> (ActionFileUploadInterceptor.java:139) - Bypassing /action/...
> >>
> >> The struts dispatcher sees the request as being a valid Multipart POST
> >> request and and wraps it with the MultipartRequestMapper.
> >> The JakartaMultiPartRequest finds and recognises the uploaded file
> >> parameter [document]
> >> But then the two upload interceptors Bypass processing which means the
> >> withUploadedFiles method on the action is not called.
> >>
> >> I had a look at the source for the ActionFileUploadInterceptor and the
> >> request is only bypassed if it is not an instance of
> >> MultipartRequestMapper, which according to the logs it is. I'm very
> >> confused. I setup a simple test to prove we weren't going mad.
> >>
> >> Form is a simple form:
> >>
> >>       <s:form action="saveStockItem" method="POST" 
> >> enctype="multipart/form-data">
> >>           <s:hidden name="item.itemId"/>
> >>           <s:textfield name="item.name" key="stock.name"></s:textfield>
> >>           <s:textarea name="item.description" 
> >> key="stock.description"></s:textarea>
> >>           <s:file name="document" key="stock.image"></s:file>
> >>           <s:submit >upload</s:submit>
> >>       </s:form>
> >>
> >> The stack is the struts standard defaultStack from the core
> >> struts-default.xml
> >>
> >>       <action name="saveStockItem" class="stockAction" method="save">
> >>           <interceptor-ref name="defaultStack"/>
> >>           <result name="input">/WEB-INF/pages/formStock.jsp</result>
> >>           <result name="success" type="redirectAction">stockItems</result>
> >>       </action>
> >>
> >> The action class implements UploadedFilesAware and has an appropriate
> >> withUploadedFiles method.
> >>
> >> Has anyone experienced this or is it obvious what we are missing. Any
> >> help would be appreciated.
> >>
> >> Zoran
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail:user-unsubscr...@struts.apache.org
> > For additional commands, e-mail:user-h...@struts.apache.org
> >

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to