public class DefaultPartHttpMessageReader extends LoggingCodecSupport implements HttpMessageReader<Part>
Part
のストリームへの "multipart/form-data"
リクエストを解析するためのデフォルトの HttpMessageReader
。 デフォルトの非ストリーミングモードでは、このメッセージリーダーは maxInMemorySize
より小さい部分の内容をメモリに保存し、それより大きい部分の内容を fileStorageDirectory
の一時ファイルに保存します。
ストリーミングモードでは、パーツのコンテンツは解析された入力バッファストリームから直接ストリーミングされ、メモリやファイルには保存されません。
このリーダーは、すべてのパーツをマップに集約するために MultipartHttpMessageReader
に提供できます。
logger
コンストラクターと説明 |
---|
DefaultPartHttpMessageReader() |
修飾子と型 | メソッドと説明 |
---|---|
boolean | canRead(ResolvableType elementType, MediaType mediaType) 指定されたオブジェクト型がこのリーダーでサポートされているかどうか。 |
int | getMaxInMemorySize() configured の最大メモリ内サイズを取得します。 |
ListSE<MediaType> | getReadableMediaTypes() このリーダーでサポートされているメディア型のリストを返します。 |
reactor.core.publisher.Flux<Part> | read(ResolvableType elementType, ReactiveHttpInputMessage message, MapSE<StringSE, ObjectSE> hints) 入力メッセージから読み取り、オブジェクトのストリームにデコードします。 |
reactor.core.publisher.Mono<Part> | readMono(ResolvableType elementType, ReactiveHttpInputMessage message, MapSE<StringSE, ObjectSE> hints) 入力メッセージから読み取り、単一のオブジェクトにデコードします。 |
void | setBlockingOperationScheduler(reactor.core.scheduler.Scheduler blockingOperationScheduler) ファイルとディレクトリの作成、およびファイルへの書き込みに使用する Reactor Scheduler を設定します。 |
void | setFileStorageDirectory(PathSE fileStorageDirectory) maxInMemorySize より大きいパーツを保存するために使用するディレクトリを設定します。 |
void | setHeadersCharset(CharsetSE headersCharset) ヘッダーのデコードに使用する文字セットを設定します。 |
void | setMaxDiskUsagePerPart(long maxDiskUsagePerPart) ファイルパーツに許可される最大ディスク容量を設定します。 |
void | setMaxHeadersSize(int byteCount) 各パーツのヘッダーセクションごとに許可されるメモリの最大量を構成します。 |
void | setMaxInMemorySize(int maxInMemorySize) パーツごとに許可されるメモリの最大量を構成します。 |
void | setMaxParts(int maxParts) 特定のマルチパートリクエストで許可されるパーツの最大数を指定します。 |
void | setStreaming(boolean streaming) true に設定すると、パーツのコンテンツは解析された入力バッファーストリームから直接ストリーミングされ、メモリやファイルには保存されません。 |
isEnableLoggingRequestDetails, setEnableLoggingRequestDetails
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
getReadableMediaTypes, read, readMono
public void setMaxHeadersSize(int byteCount)
byteCount
- ヘッダーの最大メモリ量 public int getMaxInMemorySize()
configured
の最大メモリ内サイズを取得します。public void setMaxInMemorySize(int maxInMemorySize)
DataBufferLimitException
で拒否されます。デフォルトでは、これは 256K に設定されています。
ストリーミングが有効になっている場合、このプロパティは無視されることに注意してください。
maxInMemorySize
- バイト単位のメモリ内制限。-1 に設定すると、コンテンツ全体がメモリに保存されます public void setMaxDiskUsagePerPart(long maxDiskUsagePerPart)
デフォルトでは、これは -1 に設定されています。これは、最大値がないことを意味します。
ストリーミングが有効になっている場合、または maxInMemorySize
が -1 に設定されている場合、このプロパティは無視されることに注意してください。
public void setMaxParts(int maxParts)
デフォルトでは、これは -1 に設定されています。これは、最大値がないことを意味します。
public void setFileStorageDirectory(PathSE fileStorageDirectory) throws IOExceptionSE
maxInMemorySize
より大きいパーツを保存するために使用するディレクトリを設定します。デフォルトでは、spring-webflux-multipart
という名前のディレクトリがシステム一時ディレクトリに作成されます。 ストリーミングが有効になっている場合、または maxInMemorySize
が -1 に設定されている場合、このプロパティは無視されることに注意してください。
IOExceptionSE
- I/O エラーが発生した場合、または親ディレクトリが存在しない場合 public void setBlockingOperationScheduler(reactor.core.scheduler.Scheduler blockingOperationScheduler)
Scheduler
を設定します。デフォルトでは Schedulers.boundedElastic()
が使用されますが、このプロパティを使用すると、外部で管理されるスケジューラに変更できます。 ストリーミングが有効になっている場合、または maxInMemorySize
が -1 に設定されている場合、このプロパティは無視されることに注意してください。
Schedulers.newBoundedElastic(int, int, java.lang.String)
public void setStreaming(boolean streaming)
true
に設定すると、パーツのコンテンツは解析された入力バッファーストリームから直接ストリーミングされ、メモリやファイルには保存されません。false
の場合、パーツはメモリ内および / またはファイルストレージによってバックアップされます。デフォルトは false
です。 ストリーミングが有効になっている場合、このメッセージリーダーによって生成される Flux<Part>
は、元の順序、つまり HTTP メッセージの順序で消費される必要があることに注意してください。さらに、次の部分に移動する前に、ボディの内容を完全に消費するかキャンセルする必要があります。
また、このプロパティを有効にすると、maxInMemorySize
、maxDiskUsagePerPart
、fileStorageDirectory
、fileCreationScheduler
が事実上無視されることに注意してください。
public void setHeadersCharset(CharsetSE headersCharset)
headersCharset
- ヘッダーのデコードに使用する文字セット public ListSE<MediaType> getReadableMediaTypes()
HttpMessageReader
canWrite(elementType, null)
を介して保護する必要があります。このリストでは、特定の要素型でのみサポートされているメディア型を除外することもできます。または、HttpMessageReader.getReadableMediaTypes(ResolvableType)
を使用してより正確なリストを作成します。HttpMessageReader<Part>
の getReadableMediaTypes
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType)
HttpMessageReader
HttpMessageReader<Part>
の canRead
elementType
- チェックするオブジェクトの型 mediaType
- 読み取り用のメディア型 (おそらく null
)true
、そうでない場合は false
public reactor.core.publisher.Mono<Part> readMono(ResolvableType elementType, ReactiveHttpInputMessage message, MapSE<StringSE,ObjectSE> hints)
HttpMessageReader
HttpMessageReader<Part>
の readMono
elementType
- HttpMessageReader.canRead(ResolvableType, MediaType)
を介して事前にチェックされている必要があるストリーム内のオブジェクトの型 message
- 読み取るメッセージ hints
- 入力の読み取りおよびデコード方法に関する追加情報 public reactor.core.publisher.Flux<Part> read(ResolvableType elementType, ReactiveHttpInputMessage message, MapSE<StringSE,ObjectSE> hints)
HttpMessageReader
HttpMessageReader<Part>
の read
elementType
- HttpMessageReader.canRead(ResolvableType, MediaType)
を介して事前にチェックされている必要があるストリーム内のオブジェクトの型 message
- 読み取るメッセージ hints
- 入力の読み取りおよびデコード方法に関する追加情報