[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-user
Subject:    Re: [commons-fileupload2-jakarta] JakartaServletFileUpload.getItemIterator() not working in 2.0.0-M1
From:       Gary Gregory <garydgregory () gmail ! com>
Date:       2023-09-29 11:59:48
Message-ID: CACZkXPzkNxX29ht=0G_0J80EhXtdxuBXSUqHf9O9W+W8kgw+OQ () mail ! gmail ! com
[Download RAW message or body]


Please provide a patch attached to a Jira ticket or a PR for a failing unit
test to make it simple for a maintainer to help you out.

Gary

On Thu, Sep 28, 2023, 12:39 AM Maxim Solodovnik <solomax666@gmail.com>
wrote:

> Hello,
> 
> I've tried to check this one :)
> 
> Modified this test:
> 
> commons-fileupload2-jakarta-servlet5/src/test/java/org/apache/commons/fileupload2/jakarta/servlet5/JakartaServletFileUploadTest.java
>  
> Add this block at the bottom:
> 
> ```
> final var itemCount = new AtomicInteger(0);
> upload.getItemIterator(new JakartaMockServletHttpRequest(bytes,
> Constants.CONTENT_TYPE)).forEachRemaining(item -> {
> String name = item.getFieldName();
> InputStream stream = item.getInputStream();
> if (item.isFormField()) {
> System.out.println("Form field " + name + " with value " + "
> detected.");
> } else {
> System.out.println("File field " + name + " with file name " +
> item.getName() + " detected.");
> // Process the input stream
> }
> });
> assertEquals(4, itemCount.get());
> ```
> 
> The test is GREEN
> 
> BUT
> 
> if i try to reuse previously created request like this:
> 
> ```
> upload.getItemIterator(request).forEachRemaining(item -> {
> ```
> 
> The test will fail
> 
> 
> Is it be possible request was already iterated before
> `forEachRemaining` was called?
> 
> On Thu, 28 Sept 2023 at 08:31, Gary Gregory <garydgregory@gmail.com>
> wrote:
> > 
> > Hi,
> > 
> > The best way to help would be to provide a PR on GitHub with a failing
> > test, and if you find it, a fix.
> > 
> > Gary
> > 
> > 
> > On Wed, Sep 27, 2023, 7:33 PM Ian Evans <ian_robert_evans@hotmail.com>
> > wrote:
> > 
> > > Using the following library:
> > > 
> > > <dependency>
> > > <groupId>org.apache.commons</groupId>
> > > <artifactId>commons-fileupload2-jakarta</artifactId>
> > > <version>2.0.0-M1</version>
> > > </dependency>
> > > 
> > > The Streaming API (documented here FileUpload – The Streaming API (
> > > apache.org)<
> > > https://commons.apache.org/proper/commons-fileupload/streaming.html>)
> > > does not return any items. I've tested the following code using
> postman and
> > > curl to send a multipart/form-data request, in both cases
> getItemIterator
> > > fails to return any items (internally it seems an exceptio is thrown):
> > > 
> > > 
> > > public ResponseEntity<Void> upload(HttpServletRequest request) throws
> > > IOException {
> > > if (!JakartaServletFileUpload.isMultipartContent(request)) {
> > > throw new IllegalArgumentException("not multipart");
> > > }
> > > 
> > > JakartaServletFileUpload upload = new
> JakartaServletFileUpload();
> > > 
> > > upload.getItemIterator(request).forEachRemaining(item -> {
> > > String name = item.getFieldName();
> > > InputStream stream = item.getInputStream();
> > > if (item.isFormField()) {
> > > System.out.println("Form field " + name + " with value
> "
> > > + convertInputStreamToString(stream) + "
> > > detected.");
> > > } else {
> > > System.out.println("File field " + name + " with file
> name
> > > "
> > > + item.getName() + " detected.");
> > > // Process the input stream
> > > }
> > > });
> > > ...
> > > }
> > > 
> > > If I can help diagnose the issue in any way I'm more than happy.
> > > 
> > > 
> > > 
> > > 
> 
> 
> 
> --
> Best regards,
> Maxim
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
> 
> 



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic