[ 
https://issues.apache.org/jira/browse/FILEUPLOAD-148?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12531747
 ] 

Stepan Koltsov commented on FILEUPLOAD-148:
-------------------------------------------

setThreshold() causes large files to be written on disk. But after files is 
saved to disk, calling of FileItem.get() loads that large item into memory:

===
public byte[] get() {
    if (isInMemory()) {
        if (cachedContent == null) {
            cachedContent = dfos.getData();
        }
        return cachedContent;
    }

    byte[] fileData = new byte[(int) getSize()];
    FileInputStream fis = null;

    try {
        fis = new FileInputStream(dfos.getFile());
        fis.read(fileData);
    } catch (IOException e) {
        fileData = null;
    } finally {
        if (fis != null) {
            try {
                fis.close();
            } catch (IOException e) {
                // ignore
            }
        }
    }

    return fileData;
}
===

> FileItemFactory.setMaxStringLength()
> ------------------------------------
>
>                 Key: FILEUPLOAD-148
>                 URL: https://issues.apache.org/jira/browse/FILEUPLOAD-148
>             Project: Commons FileUpload
>          Issue Type: New Feature
>    Affects Versions: 1.2
>            Reporter: Stepan Koltsov
>
> Need method
> FileItemFactory.setMaxStringLength(int limitInBytes)
> When this parameter is set, calling of FileItem.getString() when getSize() 
> exceeds limitInBytes should throw Exception. This is required to avoid OOME 
> in case of wrongly submitted forms (i. e. when bad guy puts big file into the 
> form field "fileDescription").
> Or even better sizeThreshold should be used for this value.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to