[ https://issues.apache.org/jira/browse/WICKET-6425?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Grigorov resolved WICKET-6425. ------------------------------------- Resolution: Not A Problem This is by Servlet 3 specification. The javadoc of javax.servlet.http.Part says: {code} /** * A convenience method to write this uploaded item to disk. * * <p>This method is not guaranteed to succeed if called more than once for * the same part. This allows a particular implementation to use, for * example, file renaming, where possible, rather than copying all of the * underlying data, thus gaining a significant performance benefit. * * @param fileName the name of the file to which the stream will be * written. The file is created relative to the location as * specified in the MultipartConfig * * @throws IOException if an error occurs. */ public void write(String fileName) throws IOException; {code}. "The file is created relative to the location as specified in the MultipartConfig". Servlet 3 file uploads have many restrictions compared to commons-fileupload :-/ > ServletPartFileItem saves file to wrong location > ------------------------------------------------ > > 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)