[ 
https://issues.apache.org/jira/browse/WICKET-6425?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16097395#comment-16097395
 ] 

Richard Eckart de Castilho edited comment on WICKET-6425 at 7/22/17 6:09 PM:
-----------------------------------------------------------------------------

Can you give me a tip how to force commons-upload into not returning any items 
in a plain Wicket-only example? Because that is necessary in order to enter the 
fallback-branch that uses the Servlet 3 API:

*MultipartServletWebRequestImpl*
{noformat}
                        // try to parse the file uploads by using Apache 
Commons FileUpload APIs
                        // because they are feature richer (e.g. progress 
updates, cleaner)
                        items = fileUpload.parseRequest(new 
ServletRequestContext(request));
                        if (items.isEmpty())
                        {
                                // fallback to Servlet 3.0 APIs
                                items = readServlet3Parts(request);
                        }
{noformat}

The application where I am originally hitting the problem is a Spring Boot 
application which enters into that part of the Wicket code. I have tried 
reproducing the issue with a plain Wicket application generated from the Wicket 
Maven archetype, but it does not enter into that branch.


was (Author: rec):
Can you give me a tip how to force commons-upload into not returning any items 
in a plain Wicket-only example? Because that is necessary in order to enter the 
fallback-branch that uses the Servlet 3 API:

**MultipartServletWebRequestImpl**
{noformat}
                        // try to parse the file uploads by using Apache 
Commons FileUpload APIs
                        // because they are feature richer (e.g. progress 
updates, cleaner)
                        items = fileUpload.parseRequest(new 
ServletRequestContext(request));
                        if (items.isEmpty())
                        {
                                // fallback to Servlet 3.0 APIs
                                items = readServlet3Parts(request);
                        }
{noformat}

The application where I am originally hitting the problem is a Spring Boot 
application which enters into that part of the Wicket code. I have tried 
reproducing the issue with a plain Wicket application generated from the Wicket 
Maven archetype, but it does not enter into that branch.

> For disk-cached downloads, FileUpload.writeToTempFile() points to an empty 
> file
> -------------------------------------------------------------------------------
>
>                 Key: WICKET-6425
>                 URL: https://issues.apache.org/jira/browse/WICKET-6425
>             Project: Wicket
>          Issue Type: Bug
>    Affects Versions: 7.8.0
>            Reporter: Richard Eckart de Castilho
>
> ServletPartFileItem.write() receives an absolute path to a temporary location 
> from FileUpload.writeToTempFile(). However, it discards the full path and 
> passes on only the file name itself.
> {noformat}
>       @Override
>       public void write(File file) throws Exception
>       {
>               part.write(file.getName());
>       }
> {noformat}
> So "file" here is an absolute location to a temporary file in the temp folder.
> Next, Tomcat's ApplicationPart.write() turns `file.getName()` back into a 
> file which is now relative to the current working directory. 
> Thus, the downloaded file never ends up in the location requested by 
> FileUpload.writeToTempFile().
> Relevant stack
> {noformat}
> Daemon Thread [http-nio-8080-exec-5] (Suspended)      
>       owns: NioEndpoint$NioSocketWrapper  (id=137)    
>       DiskFileItem.write(File) line: 388      
>       ApplicationPart.write(String) line: 120 
>       ServletPartFileItem.write(File) line: 140       
>       FileUpload.writeTo(File) line: 234      
>       FileUpload.writeToTempFile() line: 254  
> ...
> {noformat}
> Using Tomcat 8.5.16, Wicket 7.8.0



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to