org.apache.struts.upload
クラス MultipartIterator

java.lang.Object
  拡張org.apache.struts.upload.MultipartIterator

public class MultipartIterator
extends java.lang.Object

この MultipartIterator クラスは、 マルチパートリクエストの入力データの読み込みと、 それを入力要素に分割する役割を担っており、表現を簡潔にするために MultipartElement を内包しています。 このクラスを使用するには、 HttpServletRequest をコンストラクタに渡して、 MultipartIterator インスタンスを新規に生成します。 getNextElement メソッドが null を返すまで使用すると、処理が完了します。例:

      MultipartIterator iterator = new MultipartIterator(request);
      MultipartElement element;

      while ((element = iterator.getNextElement()) != null) {
           //element に関する処理
      }
 

作成者:
Mike Schachter
関連項目:
MultipartElement
翻訳者:
樋田 佳之 [日本語訳のコメントは、report@jajakarta.orgに送ってください。]

フィールドの概要
protected  java.lang.String boundary
          マルチパートリクエストの境界文字。
protected  byte[] boundaryBytes
          マルチパートリクエストの境界文字のバイト配列表現。
protected  int bufferSize
          リクエストから一度に読めるデータの総量。
protected  int contentLength
          リクエストのコンテント長。
protected  boolean contentRead
          ストリームの入力が完了したかどうか。
protected  int diskBufferSize
          ファイルシステムへ一度に書き込めるバイト数による最大サイズ [20K]。
protected  BufferedMultipartInputStream inputStream
          このクラスのための入力ストリームインスタンス。
static int MAX_LINE_SIZE
          行の読み込みに使用されるバッファの、バイト数による最大サイズ [4K]。
protected  long maxSize
          許容される最大ファイルサイズのバイト数。
protected  javax.servlet.http.HttpServletRequest request
          このクラスのためのリクエストインスタンス。
protected  java.lang.String tempDir
          ファイルを置くための一時ディレクトリ。
protected  long totalLength
          リクエストから読んだ総バイト数。
 
コンストラクタの概要
MultipartIterator(javax.servlet.http.HttpServletRequest request)
          デフォルトのバッファサイズおよび無制限のファイルサイズによって MultipartIterator を構築します。
MultipartIterator(javax.servlet.http.HttpServletRequest request, int bufferSize)
          指定されたバッファサイズおよび無制限のファイルサイズによって MultipartIterator を構築します。
MultipartIterator(javax.servlet.http.HttpServletRequest request, int bufferSize, long maxSize)
          指定されたバッファサイズおよびバイト数で指定された、ファイルサイズの上限によって MultipartIterator を構築します。
MultipartIterator(javax.servlet.http.HttpServletRequest request, int bufferSize, long maxSize, java.lang.String tempDir)
           
 
メソッドの概要
protected  java.io.File createLocalFile()
          処理中のマルチパート要素からディスク上にファイルを生成します。
static boolean equals(byte[] comp, int offset, int length, byte[] source)
          等価であるかどうかバイト列をチェックします。
 int getBufferSize()
          一行から一度に読める総バイト数の上限を取得します。
 long getMaxSize()
          マルチパートリクエストとして許容される最大ポストデータサイズを取得します。
 MultipartElement getNextElement()
          イテレータ内に次の要素が存在する場合にそれを取り出します。
static java.lang.String parseBoundary(java.lang.String contentType)
          境界文字について content-type の文字列を解析します。
static java.lang.String parseContentType(java.lang.String contentTypeString)
          マルチパートフォームの "Content-Type" 行からコンテントタイプを解析します。
static java.lang.String parseDispositionFilename(java.lang.String dispositionString)
          コンテントディスポジション行から "filename" 属性を取り出します。
static java.lang.String parseDispositionName(java.lang.String dispositionString)
          コンテントディスポジション行から "name" 属性を取り出します。
static java.lang.String parseForAttribute(java.lang.String attribute, java.lang.String parseString)
          文字列を解析して対になる属性と値を探し出し、その値を返します。
protected  void parseRequest()
          処理対象となる境界文字の取得と入力ストリームの準備をします。
protected  java.lang.String readLine()
          改行に到達するまで入力ストリームを読み続けます。
 void setBufferSize(int bufferSize)
          一行から一度に読める総バイト数の上限をセットします。
 void setMaxSize(long maxSize)
          マルチパートリクエストとして許容される最大のポストデータサイズをセットします。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

MAX_LINE_SIZE

public static int MAX_LINE_SIZE
行の読み込みに使用されるバッファの、バイト数による最大サイズ [4K]。


request

protected javax.servlet.http.HttpServletRequest request
このクラスのためのリクエストインスタンス。


inputStream

protected BufferedMultipartInputStream inputStream
このクラスのための入力ストリームインスタンス。


boundary

protected java.lang.String boundary
マルチパートリクエストの境界文字。


boundaryBytes

protected byte[] boundaryBytes
マルチパートリクエストの境界文字のバイト配列表現。


contentRead

protected boolean contentRead
ストリームの入力が完了したかどうか。


maxSize

protected long maxSize
許容される最大ファイルサイズのバイト数。-1 にすると無効になります


totalLength

protected long totalLength
リクエストから読んだ総バイト数。


contentLength

protected int contentLength
リクエストのコンテント長。


diskBufferSize

protected int diskBufferSize
ファイルシステムへ一度に書き込めるバイト数による最大サイズ [20K]。


bufferSize

protected int bufferSize
リクエストから一度に読めるデータの総量。 これはリクエストから読める行の最大サイズ(バイト数)も表します。 [4KB]


tempDir

protected java.lang.String tempDir
ファイルを置くための一時ディレクトリ。

コンストラクタの詳細

MultipartIterator

public MultipartIterator(javax.servlet.http.HttpServletRequest request)
                  throws javax.servlet.ServletException
デフォルトのバッファサイズおよび無制限のファイルサイズによって MultipartIterator を構築します。

パラメータ:
request - イテレータへ渡すマルチパートリクエスト

MultipartIterator

public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                         int bufferSize)
                  throws javax.servlet.ServletException
指定されたバッファサイズおよび無制限のファイルサイズによって MultipartIterator を構築します。

パラメータ:
request - イテレータへ渡すマルチパートリクエスト
bufferSize - 入力ストリームから一度に読むべきサイズのバイト数

MultipartIterator

public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                         int bufferSize,
                         long maxSize)
                  throws javax.servlet.ServletException
指定されたバッファサイズおよびバイト数で指定された、ファイルサイズの上限によって MultipartIterator を構築します。

パラメータ:
request - イテレータへ渡すマルチパートリクエスト
bufferSize - 入力ストリームから一度に読めるサイズのバイト数
maxSize - マルチパート要素のデータとして許容される最大サイズのバイト数

MultipartIterator

public MultipartIterator(javax.servlet.http.HttpServletRequest request,
                         int bufferSize,
                         long maxSize,
                         java.lang.String tempDir)
                  throws javax.servlet.ServletException
メソッドの詳細

getNextElement

public MultipartElement getNextElement()
                                throws javax.servlet.ServletException,
                                       java.io.UnsupportedEncodingException
イテレータ内に次の要素が存在する場合にそれを取り出します。

戻り値:
リクエストデータ内にある次の要素を表す MultipartElement
例外:
javax.servlet.ServletException - ポストされたサイズが、3 番目の引数でコンストラクタに渡された、 最大ファイルサイズを超えた場合
java.io.UnsupportedEncodingException - "ISO-8859-1" エンコーディングができない場合

setBufferSize

public void setBufferSize(int bufferSize)
一行から一度に読める総バイト数の上限をセットします。

関連項目:
ServletInputStream.readLine(byte[], int, int)

getBufferSize

public int getBufferSize()
一行から一度に読める総バイト数の上限を取得します。

関連項目:
ServletInputStream.readLine(byte[], int, int)

setMaxSize

public void setMaxSize(long maxSize)
マルチパートリクエストとして許容される最大のポストデータサイズをセットします。

パラメータ:
maxSize - ポストデータのバイトでの最大サイズ、無制限にするためには -1 をセットします

getMaxSize

public long getMaxSize()
マルチパートリクエストとして許容される最大ポストデータサイズを取得します。

戻り値:
The maximum post data size in bytes

parseRequest

protected void parseRequest()
                     throws javax.servlet.ServletException
処理対象となる境界文字の取得と入力ストリームの準備をします。

例外:
javax.servlet.ServletException

parseBoundary

public static java.lang.String parseBoundary(java.lang.String contentType)
境界文字について content-type の文字列を解析します。 実際の境界文字に対してコンテントタイプ内のそれは短縮してあるため 先頭に "--" を付加します。


parseContentType

public static java.lang.String parseContentType(java.lang.String contentTypeString)
マルチパートフォームの "Content-Type" 行からコンテントタイプを解析します。

パラメータ:
contentTypeString - Content-Type 行に相当する文字列、 "\n" が付随します
戻り値:
コンテントタイプ定義または、それを見つけられなかった場合の null

parseDispositionName

public static java.lang.String parseDispositionName(java.lang.String dispositionString)
コンテントディスポジション行から "name" 属性を取り出します。

パラメータ:
dispositionString - 完全な "Content-disposition" 文字列
戻り値:
name が見けられなければ null を、 そうでなければ name を返します
関連項目:
parseForAttribute(String, String)

parseDispositionFilename

public static java.lang.String parseDispositionFilename(java.lang.String dispositionString)
コンテントディスポジション行から "filename" 属性を取り出します。

パラメータ:
dispositionString - 完全な "Content-disposition" 文字列
戻り値:
filename が見けられなければ null を、 そうでなければ filename を返します
関連項目:
parseForAttribute(String, String)

parseForAttribute

public static java.lang.String parseForAttribute(java.lang.String attribute,
                                                 java.lang.String parseString)
文字列を解析して対になる属性と値を探し出し、その値を返します。 例を挙げます:
      String parseString = "Content-Disposition: filename=\"bob\" name=\"jack\"";
      MultipartIterator.parseForAttribute(parseString, "name");
 
この場合は "bob" が返されます[訳注:例では引数が逆になっています、本来は定義通りに指定します]

パラメータ:
attribute - 取り出したい属性の名前
parseString - この文字列から値を取り出します
戻り値:
属性の値または、見つけられなかった場合の null

readLine

protected java.lang.String readLine()
                             throws javax.servlet.ServletException,
                                    java.io.UnsupportedEncodingException
改行に到達するまで入力ストリームを読み続けます。

例外:
javax.servlet.ServletException
java.io.UnsupportedEncodingException

createLocalFile

protected java.io.File createLocalFile()
                                throws java.io.IOException
処理中のマルチパート要素からディスク上にファイルを生成します。

例外:
java.io.IOException

equals

public static boolean equals(byte[] comp,
                             int offset,
                             int length,
                             byte[] source)
等価であるかどうかバイト列をチェックします。 2つのバイト列の各要素が同一である場合に等しいものとします。このメソッドでは comp[offset] と source[0] から source[length-1] と comp[offset + length - 1] までをチェックします

パラメータ:
comp - source と比較するバイト型変数
offset - comp 内における開始位置
length - 比較したい comp の長さ
source - 等価テストを行うバイト列への参照


このドキュメントは、Ja-Jakartaにより訳されました。コメントがある場合は、report@jajakarta.orgまでお願いします。
Copyright (C) 2000-2002 - Apache Software Foundation