Doubt about file upload in Cocoon 2.2

2013-06-06 Thread Miguel

Hi

  At present, I work on project based on cocoon 2.2 and I want to use 
file upload option to send an email with cocoon. Documentation of cocoon 
indicates about the parameters:


org.apache.cocoon.uploads.enable=true
org.apache.cocoon.uploads.autosave=true
org.apache.cocoon.uploads.maxsize=1000

The last parameter is very interesting because limit the size of files 
to upload the platform, so I think cocoon would be safe if people try 
upload ver big files.


I have checked that the MultipartParser java class manage this upload 
process, but it seems that the file is readed fully although size of 
file is higher than parameter maxsize, ¿it is correct this behaviour?


After debugging MultipartParser class, I see the process is:
1) if (oversized) , so if size of file is higher than parameter maxsize, 
then it is created object out = new NullOutputStream();
2) stream of file is readed and put into object out, and variable lenght 
is size of readed content.

3) if (oversized) then it is created object RejectedPart.

I don't understand because read full file if in this case always it's 
created RejectedPart object. it's necesary length variable for 
RejectedPart object?.


if at the begining of process you know content length of file and this 
number is higher of limit then it's better option not read file and 
create RejectedPart object with length = 0, isn't it?. Maybe, I don't 
know source of cocoon fully, and I am wrong.


Anybody can explain me.
thanks
attachment: miguel_valencia.vcf
-
To unsubscribe, e-mail: users-unsubscr...@cocoon.apache.org
For additional commands, e-mail: users-h...@cocoon.apache.org

Re: Doubt about file upload in Cocoon 2.2

2013-06-06 Thread Javier Puerto
Hola Miguel,


2013/6/6 Miguel miguel.valen...@juntadeandalucia.es

 Hi

   At present, I work on project based on cocoon 2.2 and I want to use file
 upload option to send an email with cocoon. Documentation of cocoon
 indicates about the parameters:

 org.apache.cocoon.uploads.**enable=true
 org.apache.cocoon.uploads.**autosave=true
 org.apache.cocoon.uploads.**maxsize=1000

 The last parameter is very interesting because limit the size of files to
 upload the platform, so I think cocoon would be safe if people try upload
 ver big files.

 I have checked that the MultipartParser java class manage this upload
 process, but it seems that the file is readed fully although size of file
 is higher than parameter maxsize, żit is correct this behaviour?


Not always, if content length is available in the request object, the
MultipartParser reject the file without save it in memory nor disk. See
methods getParts(...) and parsePaths(...) methods [1]



 After debugging MultipartParser class, I see the process is:
 1) if (oversized) , so if size of file is higher than parameter maxsize,
 then it is created object out = new NullOutputStream();
 2) stream of file is readed and put into object out, and variable lenght
 is size of readed content.
 3) if (oversized) then it is created object RejectedPart.

 I don't understand because read full file if in this case always it's
 created RejectedPart object. it's necesary length variable for RejectedPart
 object?.


The rejected part is a dummy representation so you can get information
about the rejected object. You can see in javadoc [2] that getImputStream()
method will throw an IOException.

I've rescue a snippet from an old project that used this:


//To handle the file upload limit we can detect if the part is instance of
//   org.apache.cocoon.servlet.multipart.RejectedPart

final Part part = RequestUtil.getPart(getRequest());
if(part instanceof RejectedPart) {
 throw new IllegalArgumentException(File size exceeds the maximum.);
}




 if at the begining of process you know content length of file and this
 number is higher of limit then it's better option not read file and create
 RejectedPart object with length = 0, isn't it?. Maybe, I don't know source
 of cocoon fully, and I am wrong.


I'm not sure 100% but it could be also related with your configuration
autosave=true that according to [3] it's responsible to store all the
uploaded files in the upload dir.



 Anybody can explain me.


I hope that avobe helps.

salu2.


 thanks


[1]
http://svn.apache.org/repos/asf/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/multipart/MultipartParser.java
[2]
http://cocoon.apache.org/2.2/core-modules/core/2.2/apidocs/org/apache/cocoon/servlet/multipart/RejectedPart.html
[3]
http://cocoon.apache.org/2.2/core-modules/core/2.2/apidocs/org/apache/cocoon/servlet/multipart/MultipartConfigurationHelper.html#autosaveUploads




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