486394 - MultipartConfig.fileSizeThreshold default of 0 should always create a file
+ Refactored fileSizeThreshold logic so that a configuration value of 0 is always create file (negative) is never create file positive is tested against filesize
This commit is contained in:
parent
288f2e1f51
commit
734d18fb93
|
@ -40,6 +40,7 @@ import java.util.List;
|
|||
import java.util.Locale;
|
||||
|
||||
import javax.servlet.MultipartConfigElement;
|
||||
import javax.servlet.annotation.MultipartConfig;
|
||||
import javax.servlet.http.Part;
|
||||
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
|
@ -112,7 +113,7 @@ public class MultiPartInputStreamParser
|
|||
if (MultiPartInputStreamParser.this._config.getMaxFileSize() > 0 && _size + 1 > MultiPartInputStreamParser.this._config.getMaxFileSize())
|
||||
throw new IllegalStateException ("Multipart Mime part "+_name+" exceeds max filesize");
|
||||
|
||||
if (MultiPartInputStreamParser.this._config.getFileSizeThreshold() > 0 && _size + 1 > MultiPartInputStreamParser.this._config.getFileSizeThreshold() && _file==null)
|
||||
if (_file == null && MultiPartInputStreamParser.this.isFileNeeded(_size + 1))
|
||||
createFile();
|
||||
|
||||
_out.write(b);
|
||||
|
@ -125,7 +126,7 @@ public class MultiPartInputStreamParser
|
|||
if (MultiPartInputStreamParser.this._config.getMaxFileSize() > 0 && _size + length > MultiPartInputStreamParser.this._config.getMaxFileSize())
|
||||
throw new IllegalStateException ("Multipart Mime part "+_name+" exceeds max filesize");
|
||||
|
||||
if (MultiPartInputStreamParser.this._config.getFileSizeThreshold() > 0 && _size + length > MultiPartInputStreamParser.this._config.getFileSizeThreshold() && _file==null)
|
||||
if (_file == null && MultiPartInputStreamParser.this.isFileNeeded(_size + length))
|
||||
createFile();
|
||||
|
||||
_out.write(bytes, offset, length);
|
||||
|
@ -429,6 +430,31 @@ public class MultiPartInputStreamParser
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test to determine if the file content sizes exceeds the {@link MultipartConfig#fileSizeThreshold()}
|
||||
* necessary to produce a file on disk
|
||||
* <p>
|
||||
* Configured {@link MultipartConfig#fileSizeThreshold()} of <code>0</code> is always true, negative is always false,
|
||||
* all other configurations are tested against <code>size</code> parameter
|
||||
*
|
||||
* @param size the file size to test against.
|
||||
* @return true if file is needed, false otherwise
|
||||
*/
|
||||
protected boolean isFileNeeded(long size)
|
||||
{
|
||||
if (_config.getFileSizeThreshold() < 0)
|
||||
{
|
||||
// Negative file size threshold means no file, ever
|
||||
return false;
|
||||
}
|
||||
if (_config.getFileSizeThreshold() == 0)
|
||||
{
|
||||
// 0 means always create a file
|
||||
return true;
|
||||
}
|
||||
return size > _config.getFileSizeThreshold();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse, if necessary, the multipart stream.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue