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

Reply via email to