类 DefaultPartHttpMessageReader
- 所有已实现的接口:
HttpMessageReader<Part>
HttpMessageReader for parsing "multipart/form-data"
requests to a stream of Parts.
In default, non-streaming mode, this message reader stores the
contents of parts smaller than
maxInMemorySize in memory, and parts larger
than that to a temporary file in
fileStorageDirectory.
In streaming mode, the contents of the part is streamed directly from the parsed input buffer stream, and not stored in memory nor file.
This reader can be provided to MultipartHttpMessageReader in order
to aggregate all parts into a Map.
- 从以下版本开始:
- 4.0
- 作者:
- Arjen Poutsma, Harry Yang
-
字段概要
字段修饰符和类型字段说明private reactor.core.scheduler.Schedulerprivate FileStorageprivate Charsetprivate longprivate intprivate intprivate intprivate boolean从类继承的字段 cn.taketoday.http.codec.LoggingCodecSupport
logger -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明booleanWhether the given object type is supported by this reader.private reactor.core.scheduler.SchedulerintGet theconfiguredmaximum in-memory size.Return the list of media types supported by this reader.reactor.core.publisher.Flux<Part>read(cn.taketoday.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) Read from the input message and decode to a stream of objects.reactor.core.publisher.Mono<Part>readMono(cn.taketoday.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) Read from the input message and decode to a single object.voidsetBlockingOperationScheduler(reactor.core.scheduler.Scheduler blockingOperationScheduler) Set the ReactorSchedulerto be used for creating files and directories, and writing to files.voidsetFileStorageDirectory(Path fileStorageDirectory) Set the directory used to store parts larger thanmaxInMemorySize.voidsetHeadersCharset(Charset headersCharset) Set the character set used to decode headers.voidsetMaxDiskUsagePerPart(long maxDiskUsagePerPart) Configure the maximum amount of disk space allowed for file parts.voidsetMaxHeadersSize(int byteCount) Configure the maximum amount of memory that is allowed per headers section of each part.voidsetMaxInMemorySize(int maxInMemorySize) Configure the maximum amount of memory allowed per part.voidsetMaxParts(int maxParts) Specify the maximum number of parts allowed in a given multipart request.voidsetStreaming(boolean streaming) When set totrue, the part content is streamed directly from the parsed input buffer stream, and not stored in memory nor file.private booleantooManyParts(AtomicInteger partCount) 从类继承的方法 cn.taketoday.http.codec.LoggingCodecSupport
isEnableLoggingRequestDetails, setEnableLoggingRequestDetails从类继承的方法 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait从接口继承的方法 cn.taketoday.http.codec.HttpMessageReader
getReadableMediaTypes, read, readMono
-
字段详细资料
-
maxHeadersSize
private int maxHeadersSize -
maxInMemorySize
private int maxInMemorySize -
maxDiskUsagePerPart
private long maxDiskUsagePerPart -
maxParts
private int maxParts -
streaming
private boolean streaming -
headersCharset
-
blockingOperationScheduler
private reactor.core.scheduler.Scheduler blockingOperationScheduler -
fileStorage
-
-
构造器详细资料
-
DefaultPartHttpMessageReader
public DefaultPartHttpMessageReader()
-
-
方法详细资料
-
setMaxHeadersSize
public void setMaxHeadersSize(int byteCount) Configure the maximum amount of memory that is allowed per headers section of each part. When the limit- 参数:
byteCount- the maximum amount of memory for headers
-
getMaxInMemorySize
public int getMaxInMemorySize()Get theconfiguredmaximum in-memory size. -
setMaxInMemorySize
public void setMaxInMemorySize(int maxInMemorySize) Configure the maximum amount of memory allowed per part. When the limit is exceeded:- file parts are written to a temporary file.
- non-file parts are rejected with
DataBufferLimitException.
By default this is set to 256K.
Note that this property is ignored when streaming is enabled.
- 参数:
maxInMemorySize- the in-memory limit in bytes; if set to -1 the entire contents will be stored in memory
-
setMaxDiskUsagePerPart
public void setMaxDiskUsagePerPart(long maxDiskUsagePerPart) Configure the maximum amount of disk space allowed for file parts.By default this is set to -1, meaning that there is no maximum.
Note that this property is ignored when streaming is enabled, , or when
maxInMemorySizeis set to -1. -
setMaxParts
public void setMaxParts(int maxParts) Specify the maximum number of parts allowed in a given multipart request.By default this is set to -1, meaning that there is no maximum.
-
setFileStorageDirectory
Set the directory used to store parts larger thanmaxInMemorySize. By default, a directory namedmultipartis created under the system temporary directory.Note that this property is ignored when streaming is enabled, or when
maxInMemorySizeis set to -1.- 抛出:
IOException- if an I/O error occurs, or the parent directory does not exist
-
setBlockingOperationScheduler
public void setBlockingOperationScheduler(reactor.core.scheduler.Scheduler blockingOperationScheduler) Set the ReactorSchedulerto be used for creating files and directories, and writing to files. By default,Schedulers.boundedElastic()is used, but this property allows for changing it to an externally managed scheduler.Note that this property is ignored when streaming is enabled, or when
maxInMemorySizeis set to -1.- 另请参阅:
-
Schedulers.newBoundedElastic(int, int, java.lang.String)
-
getBlockingOperationScheduler
private reactor.core.scheduler.Scheduler getBlockingOperationScheduler() -
setStreaming
public void setStreaming(boolean streaming) When set totrue, the part content is streamed directly from the parsed input buffer stream, and not stored in memory nor file. Whenfalse, parts are backed by in-memory and/or file storage. Defaults tofalse.NOTE that with streaming enabled, the
Flux<Part>that is produced by this message reader must be consumed in the original order, i.e. the order of the HTTP message. Additionally, the body contents must either be completely consumed or canceled before moving to the next part.Also note that enabling this property effectively ignores
maxInMemorySize,maxDiskUsagePerPart,fileStorageDirectory, andfileCreationScheduler. -
setHeadersCharset
Set the character set used to decode headers. Defaults to UTF-8 as per RFC 7578.- 参数:
headersCharset- the charset to use for decoding headers- 另请参阅:
-
getReadableMediaTypes
从接口复制的说明:HttpMessageReaderReturn the list of media types supported by this reader. The list may not apply to every possible target element type and calls to this method should typically be guarded viacanWrite(elementType, null). The list may also exclude media types supported only for a specific element type. Alternatively, useHttpMessageReader.getReadableMediaTypes(ResolvableType)for a more precise list.- 指定者:
getReadableMediaTypes在接口中HttpMessageReader<Part>- 返回:
- the general list of supported media types
-
canRead
从接口复制的说明:HttpMessageReaderWhether the given object type is supported by this reader.- 指定者:
canRead在接口中HttpMessageReader<Part>- 参数:
elementType- the type of object to checkmediaType- the media type for the read (possiblynull)- 返回:
trueif readable,falseotherwise
-
readMono
public reactor.core.publisher.Mono<Part> readMono(cn.taketoday.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) 从接口复制的说明:HttpMessageReaderRead from the input message and decode to a single object.- 指定者:
readMono在接口中HttpMessageReader<Part>- 参数:
elementType- the type of objects in the stream which must have been previously checked viaHttpMessageReader.canRead(ResolvableType, MediaType)message- the message to read fromhints- additional information about how to read and decode the input- 返回:
- the decoded object
-
read
public reactor.core.publisher.Flux<Part> read(cn.taketoday.core.ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) 从接口复制的说明:HttpMessageReaderRead from the input message and decode to a stream of objects.- 指定者:
read在接口中HttpMessageReader<Part>- 参数:
elementType- the type of objects in the stream which must have been previously checked viaHttpMessageReader.canRead(ResolvableType, MediaType)message- the message to read fromhints- additional information about how to read and decode the input- 返回:
- the decoded stream of elements
-
tooManyParts
-