AW: Struts 6.3 Issue Uploading Files

2024-03-05 Thread Patrick Arnoldy
Hello,

we just had a similar issue in our application after migrating to Tomcat 9.
This may not be a Struts problem, but a change in how Tomcat treats files since 
version 9.

Please have a look at those links:
https://stackoverflow.com/questions/48175852/tomcat9-file-permissions-change
https://tomcat.apache.org/tomcat-9.0-doc/changelog.html   (look for "Tomcat 
9.0.0.M1 (markt)")


Regards
Patrick Arnoldy


-Ursprüngliche Nachricht-
Von: Lukasz Lenart  
Gesendet: Mittwoch, 6. März 2024 08:10
An: Struts Users Mailing List 
Betreff: Re: Struts 6.3 Issue Uploading Files

Can you take a look at this PR? Can you test it?
https://github.com/apache/struts/pull/892

śr., 6 mar 2024 o 07:51 Lukasz Lenart  napisał(a):
>
> pon., 4 mar 2024 o 00:28 Zoran Avtarovski  
> napisał(a):
> > I tried to raise a ticket to include some logging in the isMultipartRequest 
> > function to record why it failed but I don't have an account anymore.
>
> I've created the ticket
> https://issues.apache.org/jira/browse/WW-5401
>
>
> Cheers
> Lukasz

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


Re: Struts 6.3 Issue Uploading Files

2024-03-05 Thread Lukasz Lenart
Can you take a look at this PR? Can you test it?
https://github.com/apache/struts/pull/892

śr., 6 mar 2024 o 07:51 Lukasz Lenart  napisał(a):
>
> pon., 4 mar 2024 o 00:28 Zoran Avtarovski  
> napisał(a):
> > I tried to raise a ticket to include some logging in the isMultipartRequest 
> > function to record why it failed but I don't have an account anymore.
>
> I've created the ticket
> https://issues.apache.org/jira/browse/WW-5401
>
>
> Cheers
> Lukasz

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



Re: Struts 6.3 Issue Uploading Files

2024-03-05 Thread Lukasz Lenart
pon., 4 mar 2024 o 00:28 Zoran Avtarovski  napisał(a):
> I tried to raise a ticket to include some logging in the isMultipartRequest 
> function to record why it failed but I don't have an account anymore.

I've created the ticket
https://issues.apache.org/jira/browse/WW-5401


Cheers
Lukasz

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



Re: Struts 6.3 Issue Uploading Files

2024-03-03 Thread Zoran Avtarovski
Thanks Lukasz,

I'm not sure that is the issue. I did a simple verification test and added some 
debugging around the request content type I got the following :
Request Content Type: multipart/form-data; 
boundary=---22500187869113554433768726201
Using default regex string content type REGEX : true

I just plugged the default value into the REGEX parser :
Pattern multipartValidationPattern = 
Pattern.compile("^multipart/form-data(?:\\s*;\\s*boundary=[0-9a-zA-Z'()+_,\\-./:=?]{1,70})?(?:\\s*;\\s*charset=[a-zA-Z\\-0-9]{3,14})?");
boolean validContentType = request.getContentType() != null && 
multipartValidationPattern.matcher(contentType.toLowerCase(Locale.ENGLISH)).matches();

I tried to raise a ticket to include some logging in the isMultipartRequest 
function to record why it failed but I don't have an account anymore.

I will modify the source code locally to add some debug code this afternoon. 
Hopefully it will build OK and I can get back to you with some feedback.

Z.


On 1/3/2024, 5:19 pm, "Lukasz Lenart" mailto:lukaszlen...@apache.org>> wrote:


The request must match the following regex [1], more details in the
docs [2], yet I notice there is no logging around this logic, feel
free to create a ticket to improve that.


[1] 
https://github.com/apache/struts/blob/master/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java#L110
 

[2] 
https://struts.apache.org/core-developers/file-upload.html#request-validation 



śr., 28 lut 2024 o 23:28 Zoran Avtarovski mailto:zo...@sparecreative.com>> napisał(a):
>
> Hi Guys,
>
>
>
> We are unable to upload files to our first 6.3 application using HTTP 
> requests, but the strange thing is they work with ajax requests. I suspect we 
> are overlooking something in the config which is required in 6.3.
>
>
>
> We are using 6.3.0.2 running on Tomcat 9. The file object is null after the 
> upload but we can see the upload is there.
>
>
>
> I can see the params interceptor finds the file and copies it to the temp 
> directory, but I then can’t access the file in the action??? What’s really 
> strange is if we use the same mechanism using a an ajax request with FormData 
> it works as expected. That’s why we created a simple setup as outlined below 
> to identify the root cause.
>
>
>
> Any help would really be appreciated.
>
>
>
> Here’s a snippet of the logs:
>
> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:103) - Found 
> file item: [upload]
>
> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:114) - Item 
> is a file upload
>
>
>
> When I try and access the file in my action:
>
> action.IndexAction (IndexAction.java:54) - Uploaded file : null
>
> action.IndexAction (IndexAction.java:55) - Uploaded file name : null
>
> action.IndexAction (IndexAction.java:56) - Uploaded file type : null
>
> action.IndexAction (IndexAction.java:57) - Uploaded file length : 0
>
>
>
>
>
> And then after the request has completed:
>
> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:361) - 
> Removing file upload name=Invoice - 1331-1.pdf, StoreLocation= 
> /apache-tomcat-9.0.44_base/work/Catalina/localhost/caams/upload_0569c990_d32c_4688_ad50_44db275ab0cc_.tmp,
>  size=465396 bytes, isFormField=false, FieldName=upload
>
>
>
> This is what my form looks like:
>
>
>
>  theme="simple">
>
> 
>
> Submit
>
> 
>
>
>
> My action has the following (BaseAction extends ActionSupport):
>
>
>
> public class IndexAction extends BaseAction {
>
>
>
> private File upload;
>
> private String uploadFileName;
>
> private String uploadContentType;
>
> private long uploadContentLength;
>
>
>
> public IndexAction() {
>
> }
>
>
>
> @Override
>
> public String execute() {
>
> return SUCCESS;
>
> }
>
>
>
> public String edit() {
>
> return INPUT;
>
> }
>
>
>
> public String uploadTest() {
>
> try {
>
> LOGGER.debug("Uploaded file : "+ upload);
>
> LOGGER.debug("Uploaded file name : "+ uploadFileName);
>
> LOGGER.debug("Uploaded file type : "+ uploadContentType);
>
> LOGGER.debug("Uploaded file length : "+ uploadContentLength);
>
>
>
> inputStream = new FileInputStream(upload);
>
>
>
> if (inputStream != null) {
>
> inputStream.close();
>
> }
>
>
>
> } catch (Exception e) {
>
> LOGGER.error("General . uploading error :", e);
>
> }
>
>
>
> return SUCCESS;
>
> }
>
>
>
> public File getUpload() {
>
> return upload;
>
> }
>
>
>
> public void setUpload(File upload) {
>
> this.upload = upload;
>
> }
>
>
>
> public String getUploadFileName() {
>
> return uploadFileName;
>
> }
>
>
>
> public void setUploadFileName(String uploadFileName) {
>
> this.uploadFileName = uploadFileName;
>
> }
>
>
>
> public String getUploadContentType() {
>
> return uploadContentType;
>
> }
>
>
>
> public void setUploadContentType(String uploadContentType) {

Re: Struts 6.3 Issue Uploading Files

2024-02-29 Thread Lukasz Lenart
The request must match the following regex [1], more details in the
docs [2], yet I notice there is no logging around this logic, feel
free to create a ticket to improve that.

[1] 
https://github.com/apache/struts/blob/master/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java#L110
[2] 
https://struts.apache.org/core-developers/file-upload.html#request-validation

śr., 28 lut 2024 o 23:28 Zoran Avtarovski  napisał(a):
>
> Hi Guys,
>
>
>
> We are unable to upload files to our first 6.3 application using HTTP 
> requests, but the strange thing is they work with ajax requests. I suspect we 
> are overlooking something in the config which is required in 6.3.
>
>
>
> We are using 6.3.0.2 running on Tomcat 9. The file object is null after the 
> upload but we can see the upload is there.
>
>
>
> I can see the params interceptor finds the file and copies it to the temp 
> directory, but I then can’t access the file in the action??? What’s really 
> strange is if we use the same mechanism using a an ajax request with FormData 
> it works as expected. That’s why we created a simple setup as outlined below 
> to identify the root cause.
>
>
>
> Any help would really be appreciated.
>
>
>
> Here’s a snippet of the logs:
>
> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:103) - Found 
> file item: [upload]
>
> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:114) - Item 
> is a file upload
>
>
>
> When I try and access the file in my action:
>
> action.IndexAction (IndexAction.java:54) - Uploaded file : null
>
> action.IndexAction (IndexAction.java:55) - Uploaded file name : null
>
> action.IndexAction (IndexAction.java:56) - Uploaded file type : null
>
> action.IndexAction (IndexAction.java:57) - Uploaded file length  : 0
>
>
>
>
>
> And then after the request has completed:
>
> multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:361) - 
> Removing file upload name=Invoice - 1331-1.pdf, StoreLocation= 
> /apache-tomcat-9.0.44_base/work/Catalina/localhost/caams/upload_0569c990_d32c_4688_ad50_44db275ab0cc_.tmp,
>  size=465396 bytes, isFormField=false, FieldName=upload
>
>
>
> This is what my form looks like:
>
>
>
>  theme="simple">
>
> 
>
>   Submit
>
> 
>
>
>
> My action has the following (BaseAction extends ActionSupport):
>
>
>
> public class IndexAction extends BaseAction {
>
>
>
> private File upload;
>
> private String uploadFileName;
>
> private String uploadContentType;
>
> private long uploadContentLength;
>
>
>
> public IndexAction() {
>
> }
>
>
>
> @Override
>
> public String execute() {
>
> return SUCCESS;
>
> }
>
>
>
> public String edit() {
>
> return INPUT;
>
> }
>
>
>
> public String uploadTest() {
>
> try {
>
> LOGGER.debug("Uploaded file : "+ upload);
>
> LOGGER.debug("Uploaded file name : "+ uploadFileName);
>
> LOGGER.debug("Uploaded file type : "+ uploadContentType);
>
> LOGGER.debug("Uploaded file length  : "+ uploadContentLength);
>
>
>
> inputStream = new FileInputStream(upload);
>
>
>
> if (inputStream != null) {
>
> inputStream.close();
>
> }
>
>
>
> } catch (Exception e) {
>
> LOGGER.error("General . uploading error :", e);
>
> }
>
>
>
> return SUCCESS;
>
> }
>
>
>
> public File getUpload() {
>
> return upload;
>
> }
>
>
>
> public void setUpload(File upload) {
>
> this.upload = upload;
>
> }
>
>
>
> public String getUploadFileName() {
>
> return uploadFileName;
>
> }
>
>
>
> public void setUploadFileName(String uploadFileName) {
>
> this.uploadFileName = uploadFileName;
>
> }
>
>
>
> public String getUploadContentType() {
>
> return uploadContentType;
>
> }
>
>
>
> public void setUploadContentType(String uploadContentType) {
>
> this.uploadContentType = uploadContentType;
>
> }
>
>
>
> public long getUploadContentLength() {
>
> return uploadContentLength;
>
> }
>
>
>
> public void setUploadContentLength(long uploadContentLength) {
>
> this.uploadContentLength = uploadContentLength;
>
> }
>
> }
>
>
>
> My relevant struts.xml config:
>
>
>
> 
>
> 
>
> 
>
> 
>
> 
>
> 
>
>
>
> 
>
> 
>
>
>
> 
>
> 
>
> 
>
>
>
> 
>
> 
>
>
>
> 
>
> /WEB-INF/pages/main/formUpload.jsp
>
> home
>
> 
>
>
>
> 
>
> /WEB-INF/pages/main/formUpload.jsp
>
> 
>
>
>
> 
>

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



Re: Struts 6.3 Issue Uploading Files

2024-02-29 Thread Zoran Avtarovski
Hi Burton,

 

The issue is with a simple HTTP request the file object is null, see the red 
log entry below. But if I use a simple jQuery ajax call, it works as expected 
and I’m not sure why and how to rectify.

 

This was the simple code I used to upload the file, same set of interceptors, 
same action, same method and it works:

   jQuery.ajax({

    type: 'POST',

    url: $form.attr('action'),

    cache: false,

    contentType: false,

    processData: false,

    data: formData,

    success: function (response) {

    if (response.success) {

    console.log(“success, file uploaded 
successfully”);

    } else {

    console.log(“failure, file upload failed to 
execute successfully”);

    }

    },

    error: function (err) {

    console.log("Error ajax submission : ", err);

    }

    });

 

The log files now include:

action.IndexAction (IndexAction.java:54) - Uploaded file : 
/apache-tomcat-9.0.44_base/work/Catalina/localhost/caams/upload_eabd436d_0fdd_4ff7_a598_b9a19724d8dd_.tmp

action.IndexAction (IndexAction.java:55) - Uploaded file name : Invoice - 
1331-1.pdf

action.IndexAction (IndexAction.java:56) - Uploaded file type : application/pdf

action.IndexAction (IndexAction.java:57) - Uploaded file length  : 0

 

whereas with an HTTP request the logs looked like this:

action.IndexAction (IndexAction.java:54) - Uploaded file : null

action.IndexAction (IndexAction.java:55) - Uploaded file name : null

action.IndexAction (IndexAction.java:56) - Uploaded file type : null

action.IndexAction (IndexAction.java:57) - Uploaded file length : 0

 

I’m trying to understand why the same action method works with the ajax 
requests but not plain HTTP requests?

 

Finally, 6.3 doesn’t have the 
org.apache.struts2.interceptor.ActionFileUploadInterceptor in the jar so I 
can’t see how we could test?

 

Z.

 

 

 

 

 

 

 

 

On 1/3/2024, 1:30 am, "Burton Rhodes" mailto:burtonrho...@gmail.com>> wrote:

 

 

I'm not exactly sure what isn't working for you, but have you tried 

using the newer FilesUploadAware interface? More information can be 

found at https://struts.apache.org/core-developers/file-upload.html 
<https://struts.apache.org/core-developers/file-upload.html>

 

 

I might also recommend you set  to see if anything comes up in the logs.

 

 

Thanks,

Burton

 

 

-- Original Message --

>From "Zoran Avtarovski" <mailto:zo...@sparecreative.com>>

To "Struts Users Mailing List" mailto:user@struts.apache.org>>

Date 2/28/2024 4:27:48 PM

Subject Struts 6.3 Issue Uploading Files

 

 

>Hi Guys,

> 

> 

> 

>We are unable to upload files to our first 6.3 application using HTTP 
>requests, but the strange thing is they work with ajax requests. I suspect we 
>are overlooking something in the config which is required in 6.3.

> 

> 

> 

>We are using 6.3.0.2 running on Tomcat 9. The file object is null after the 
>upload but we can see the upload is there.

> 

> 

> 

>I can see the params interceptor finds the file and copies it to the temp 
>directory, but I then can’t access the file in the action??? What’s really 
>strange is if we use the same mechanism using a an ajax request with FormData 
>it works as expected. That’s why we created a simple setup as outlined below 
>to identify the root cause.

> 

> 

> 

>Any help would really be appreciated.

> 

> 

> 

>Here’s a snippet of the logs:

> 

>multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:103) - Found 
>file item: [upload]

> 

>multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:114) - Item is 
>a file upload

> 

> 

> 

>When I try and access the file in my action:

> 

>action.IndexAction (IndexAction.java:54) - Uploaded file : null

> 

>action.IndexAction (IndexAction.java:55) - Uploaded file name : null

> 

>action.IndexAction (IndexAction.java:56) - Uploaded file type : null

> 

>action.IndexAction (IndexAction.java:57) - Uploaded file length : 0

> 

> 

> 

> 

> 

>And then after the request has completed:

> 

>multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:361) - 
>Removing file upload name=Invoice - 1331-1.pdf, StoreLocation= 
>/apache-tomcat-9.0.44_base/work/Catalina/localhost/caams/upload_0569c990_d32c_4688_ad50_44db275ab0cc_.tmp,
> size=465396 bytes, isFormField=false, FieldName=upload

> 

> 

> 

>This is what my form looks like:

> 

> 

> 

>theme="simple">

> 

>

> 

> Submit

> 

&

Re: Struts 6.3 Issue Uploading Files

2024-02-29 Thread Burton Rhodes
I'm not exactly sure what isn't working for you, but have you tried 
using the newer FilesUploadAware interface? More information can be 
found at https://struts.apache.org/core-developers/file-upload.html


I might also recommend you set value="true"/> to see if anything comes up in the logs.


Thanks,
Burton

-- Original Message --

From "Zoran Avtarovski" 

To "Struts Users Mailing List" 
Date 2/28/2024 4:27:48 PM
Subject Struts 6.3 Issue Uploading Files


Hi Guys,



We are unable to upload files to our first 6.3 application using HTTP requests, 
but the strange thing is they work with ajax requests. I suspect we are 
overlooking something in the config which is required in 6.3.



We are using 6.3.0.2 running on Tomcat 9. The file object is null after the 
upload but we can see the upload is there.



I can see the params interceptor finds the file and copies it to the temp 
directory, but I then can’t access the file in the action??? What’s really 
strange is if we use the same mechanism using a an ajax request with FormData 
it works as expected. That’s why we created a simple setup as outlined below to 
identify the root cause.



Any help would really be appreciated.



Here’s a snippet of the logs:

multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:103) - Found 
file item: [upload]

multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:114) - Item is 
a file upload



When I try and access the file in my action:

action.IndexAction (IndexAction.java:54) - Uploaded file : null

action.IndexAction (IndexAction.java:55) - Uploaded file name : null

action.IndexAction (IndexAction.java:56) - Uploaded file type : null

action.IndexAction (IndexAction.java:57) - Uploaded file length  : 0





And then after the request has completed:

multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:361) - Removing 
file upload name=Invoice - 1331-1.pdf, StoreLocation= 
/apache-tomcat-9.0.44_base/work/Catalina/localhost/caams/upload_0569c990_d32c_4688_ad50_44db275ab0cc_.tmp,
 size=465396 bytes, isFormField=false, FieldName=upload



This is what my form looks like:







  Submit





My action has the following (BaseAction extends ActionSupport):



public class IndexAction extends BaseAction {



private File upload;

private String uploadFileName;

private String uploadContentType;

private long uploadContentLength;



public IndexAction() {

}



@Override

public String execute() {

return SUCCESS;

}



public String edit() {

return INPUT;

}



public String uploadTest() {

try {

LOGGER.debug("Uploaded file : "+ upload);

LOGGER.debug("Uploaded file name : "+ uploadFileName);

LOGGER.debug("Uploaded file type : "+ uploadContentType);

LOGGER.debug("Uploaded file length  : "+ uploadContentLength);



inputStream = new FileInputStream(upload);



if (inputStream != null) {

inputStream.close();

}



} catch (Exception e) {

LOGGER.error("General . uploading error :", e);

}



return SUCCESS;

}



public File getUpload() {

return upload;

}



public void setUpload(File upload) {

this.upload = upload;

}



public String getUploadFileName() {

return uploadFileName;

}



public void setUploadFileName(String uploadFileName) {

this.uploadFileName = uploadFileName;

}



public String getUploadContentType() {

return uploadContentType;

}



public void setUploadContentType(String uploadContentType) {

this.uploadContentType = uploadContentType;

}



public long getUploadContentLength() {

return uploadContentLength;

}



public void setUploadContentLength(long uploadContentLength) {

this.uploadContentLength = uploadContentLength;

}

}



My relevant struts.xml config:







































/WEB-INF/pages/main/formUpload.jsp

home







/WEB-INF/pages/main/formUpload.jsp









-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



Struts 6.3 Issue Uploading Files

2024-02-28 Thread Zoran Avtarovski
Hi Guys,

 

We are unable to upload files to our first 6.3 application using HTTP requests, 
but the strange thing is they work with ajax requests. I suspect we are 
overlooking something in the config which is required in 6.3.

 

We are using 6.3.0.2 running on Tomcat 9. The file object is null after the 
upload but we can see the upload is there.

 

I can see the params interceptor finds the file and copies it to the temp 
directory, but I then can’t access the file in the action??? What’s really 
strange is if we use the same mechanism using a an ajax request with FormData 
it works as expected. That’s why we created a simple setup as outlined below to 
identify the root cause.

 

Any help would really be appreciated.

 

Here’s a snippet of the logs:

multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:103) - Found 
file item: [upload]

multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:114) - Item is 
a file upload

 

When I try and access the file in my action:

action.IndexAction (IndexAction.java:54) - Uploaded file : null

action.IndexAction (IndexAction.java:55) - Uploaded file name : null

action.IndexAction (IndexAction.java:56) - Uploaded file type : null

action.IndexAction (IndexAction.java:57) - Uploaded file length  : 0

 

 

And then after the request has completed:

multipart.JakartaMultiPartRequest (JakartaMultiPartRequest.java:361) - Removing 
file upload name=Invoice - 1331-1.pdf, StoreLocation= 
/apache-tomcat-9.0.44_base/work/Catalina/localhost/caams/upload_0569c990_d32c_4688_ad50_44db275ab0cc_.tmp,
 size=465396 bytes, isFormField=false, FieldName=upload

 

This is what my form looks like:

 





  Submit



 

My action has the following (BaseAction extends ActionSupport):

 

public class IndexAction extends BaseAction {

 

    private File upload;

    private String uploadFileName;

    private String uploadContentType;

    private long uploadContentLength;

 

    public IndexAction() {

    }

 

    @Override

    public String execute() {

    return SUCCESS;

    }

 

    public String edit() {

    return INPUT;

    }

 

    public String uploadTest() {

    try {

    LOGGER.debug("Uploaded file : "+ upload);

    LOGGER.debug("Uploaded file name : "+ uploadFileName);

    LOGGER.debug("Uploaded file type : "+ uploadContentType);

    LOGGER.debug("Uploaded file length  : "+ uploadContentLength);

    

inputStream = new FileInputStream(upload);

 

    if (inputStream != null) {

    inputStream.close();

    }

 

    } catch (Exception e) {

    LOGGER.error("General . uploading error :", e);

    }

 

    return SUCCESS;

    }

 

    public File getUpload() {

    return upload;

    }

 

    public void setUpload(File upload) {

    this.upload = upload;

    }

 

    public String getUploadFileName() {

    return uploadFileName;

    }

 

    public void setUploadFileName(String uploadFileName) {

    this.uploadFileName = uploadFileName;

    }

 

    public String getUploadContentType() {

    return uploadContentType;

    }

 

    public void setUploadContentType(String uploadContentType) {

    this.uploadContentType = uploadContentType;

    }

 

    public long getUploadContentLength() {

    return uploadContentLength;

    }

 

    public void setUploadContentLength(long uploadContentLength) {

    this.uploadContentLength = uploadContentLength;

    }

}

 

My relevant struts.xml config:

    



    

    

    

    

    

    



      





    

    

 

    

    

   



    /WEB-INF/pages/main/formUpload.jsp

    home

    

 



    /WEB-INF/pages/main/formUpload.jsp