Added :) Also adjusted the Showcase https://github.com/apache/struts/pull/895
niedz., 17 mar 2024 o 12:29 Greg Huber <gregh3...@gmail.com> napisał(a): > > Looks good, but what happened to the examples with the stream stuff? > > Something like this for MultipleFileUploadUsingArrayActionusing arrays > example? > > > public class MultipleFileUploadUsingArrayAction extends ActionSupport > implements UploadedFilesAware { > > private List<UploadedFile<File>> uploads = null; > > public String upload() throws Exception { > System.out.println("\n\n upload2"); > System.out.println("files:"); > > for (UploadedFile<File> uploadedFile : this.uploads) { > System.out.println("*** " + uploadedFile.getOriginalName() > + "\t" > + uploadedFile.getContentType() + "\t" > + uploadedFile.length()); > } > System.out.println("filenames:"); > String[] uploadFileNames = getUploadedFilesFileNames(); > for (String n : uploadFileNames) { > System.out.println("*** " + n); > } > System.out.println("content types:"); > String[] uploadContentTypes = getUploadedFilesContentType(); > for (String c : uploadContentTypes) { > System.out.println("*** " + c); > } > System.out.println("\n\n"); > return SUCCESS; > } > > @Override > public void withUploadedFiles(List<UploadedFile<File>> uploadedFiles) { > this.uploads = uploadedFiles; > } > > private String[] getUploadedFilesFileNames() { > return this.uploads.stream().map(UploadedFile::getOriginalName) > .toArray(size -> new String[size]); > } > > private String[] getUploadedFilesContentType() { > return this.uploads.stream().map(UploadedFile::getContentType) > .toArray(size -> new String[size]); > } > } > > > On 17/03/2024 09:33, Lukasz Lenart wrote: > > Better? > > https://struts.staged.apache.org/core-developers/action-file-upload > > https://struts.staged.apache.org/core-developers/file-upload > > > > czw., 14 mar 2024 o 15:29 Greg Huber<gregh3...@gmail.com> napisał(a): > >> Sorry, I meant we need to copy/duplicate this page : > >> > >> https://struts.apache.org/core-developers/file-upload.html > >> > >> to an *action* version: > >> > >> https://struts.apache.org/core-developers/action-file-upload.html > >> > >> and modify it for the new interceptor methods/logic > >> > >> On Thu, 14 Mar 2024 at 12:42, Łukasz Lenart<lukasz.len...@gmail.com> > >> wrote: > >> > >>> Done > >>> https://github.com/apache/struts-site/pull/231 > >>> > >>> czw., 14 mar 2024 o 11:35 Greg Huber<gregh3...@gmail.com> napisał(a): > >>>> There is a really good page for the old upload > >>>> > >>>> https://struts.apache.org/core-developers/file-upload.html > >>>> > >>>> But the << back to Core Developers Guide does not make it easy to find > >>>> it again. > >>>> > >>>> ## > >>>> > >>>> https://struts.apache.org/core-developers/action-file-upload-interceptor > >>>> > >>>> would benefit a similar detail page, updated and with the stream stuff. > >>>> > >>>> return > >>> this.uploadedFiles.stream().map(UploadedFile::getContentType).toArray(); > >>>> otherwise without streams > >>>> > >>>> List<UploadedFile<File>>uploads =this.uploadedFiles; > >>>> > >>>> if(uploads !=null&&uploads.size()>0){ > >>>> > >>>> for(inti =0;i <uploads.size();i++){ > >>>> > >>>> String file uploads.get(i).getOriginalName(); > >>>> > >>>> // destroy the temporary file created > >>>> > >>>> uploads.get(i).delete(); > >>>> > >>>> } > >>>> > >>>> } > >>>> > >>>> On 12/03/2024 19:48, Lukasz Lenart wrote: > >>>>> pon., 26 lut 2024 o 12:08 Greg Huber<gregh3...@gmail.com> napisał(a): > >>>>>> The documentation only lists one file > >>>>>> > >>>>>> |public void withUploadedFiles(List<UploadedFile> uploadedFiles) { if > >>>>>> (!uploadedFiles.isEmpty()) { this.uploadedFile = uploadedFiles.get(0); > >>>>>> this.fileName = uploadedFile.getName(); this.contentType = > >>>>>> uploadedFile.getContentType(); this.originalName = > >>>>>> uploadedFile.getOriginalName(); } }| > >>>>>> > >>>>>> For multiple files these need populating > >>>>>> > >>>>>> privateFile[]uploadedFiles=null; > >>>>>> > >>>>>> privateString[]uploadedFilesContentType=null; > >>>>>> > >>>>>> privateString[]uploadedFilesFileName=null; > >>>>>> > >>>>>> We have to loop and do it ourselves now? > >>>>> Basically it would be better to stop using additional fields if not > >>>>> needed. You can achieve the same behaviour just exposing getters > >>>>> extracting what's needed from "uploadedFiles", eg: > >>>>> > >>>>> public void withUploadedFiles(List<UploadedFile> uploadedFiles) { > >>>>> this.uploadedFiles = uploadedFiles; > >>>>> } > >>>>> > >>>>> public String[] getUploadedFilesContentType() { > >>>>> return > >>> this.uploadedFiles.stream().map(UploadedFile::getContentType).toArray(); > >>>>> } > >>>>> > >>>>> etc. > >>>>> > >>>>> > >>>>> Cheers > >>>>> Lukasz > >>>>> > >>>>> --------------------------------------------------------------------- > >>>>> To unsubscribe,e-mail:dev-unsubscr...@struts.apache.org > >>>>> For additional commands,e-mail:dev-h...@struts.apache.org > >>>>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail:dev-unsubscr...@struts.apache.org > >>> For additional commands, e-mail:dev-h...@struts.apache.org > >>> > >>> > > --------------------------------------------------------------------- > > To unsubscribe, e-mail:dev-unsubscr...@struts.apache.org > > For additional commands, e-mail:dev-h...@struts.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org For additional commands, e-mail: dev-h...@struts.apache.org