[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_File_Transfer-Validators.xml
blob1cc37df99f29c38d2c902b5f615257dbeee33ce3
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20774 -->
4 <sect1 id="zend.file.transfer.validators">
6     <title>Zend_File_Transfer 用のバリデータ</title>
8     <para>
9         <classname>Zend_File_Transfer</classname> にはファイル関連のバリデータがいくつか同梱されています。
10         これらを使用してセキュリティを向上させ、攻撃から身を守るようにしましょう。
11         バリデータは、それを使ってこそ役に立つものなのですから。
12         <classname>Zend_File_Transfer</classname> が提供するバリデータは
13         <classname>Zend_Validator</classname> コンポーネントに含まれ、
14         <classname>Zend_Validate_File_*</classname> という名前がついています。
15         現在使用できるバリデータは次のとおりです。
16     </para>
18     <itemizedlist>
19         <listitem>
20             <para>
21                 <code>Count</code>: このバリデータはファイルの数をチェックします。
22                 最小値と最大値を指定し、そのいずれかに違反した場合にエラーをスローします。
23             </para>
24         </listitem>
26         <listitem>
27             <para>
28                 <code>Crc32</code>: このバリデータはファイルの内容の crc32 ハッシュ値をチェックします。
29                 <code>Hash</code> バリデータをもとにしたもので、
30                 Crc32 のみをサポートする便利でシンプルなバリデータを提供します。
31             </para>
32         </listitem>
34         <listitem>
35             <para>
36                 <code>ExcludeExtension</code>: このバリデータはファイルの拡張子をチェックします。
37                 渡されたファイルの拡張子が定義済みのものだった場合にエラーをスローします。
38                 これにより、特定の拡張子だけを除外できるようになります。
39             </para>
40         </listitem>
42         <listitem>
43             <para>
44                 <code>ExcludeMimeType</code>: このバリデータはファイルの <acronym>MIME</acronym> 型をチェックします。
45                 <acronym>MIME</acronym> 型の種類を検証し、指定したファイルの <acronym>MIME</acronym>
46                 型がそれと一致するときにエラーをスローします。
47             </para>
48         </listitem>
50         <listitem>
51             <para>
52                 <code>Exists</code>: このバリデータはファイルの存在をチェックします。
53                 指定したファイルが存在しない場合にエラーをスローします。
54             </para>
55         </listitem>
57         <listitem>
58             <para>
59                 <code>Extension</code>: このバリデータはファイルの拡張子をチェックします。
60                 渡されたファイルの拡張子が未定義のものだった場合にエラーをスローします。
61             </para>
62         </listitem>
64         <listitem>
65             <para>
66                 <code>FilesSize</code>: このバリデータはすべてのファイルのサイズをチェックします。
67                 すべてのファイルのサイズを内部的に記憶し、
68                 その合計が制限値を超えた場合にエラーをスローします。
69                 サイズの最小値と最大値を指定できます。
70             </para>
71         </listitem>
73         <listitem>
74             <para>
75                 <code>ImageSize</code>: このバリデータは画像のサイズをチェックします。
76                 幅と高さについて、最小値と最大値を検証できます。
77             </para>
78         </listitem>
80         <listitem>
81             <para>
82                 <code>IsCompressed</code>: このバリデータはファイルが圧縮されているかどうかをチェックします。
83                 <code>MimeType</code> バリデータにもとづいて、
84                 zip や arc といった圧縮アーカイブ形式かどうかを判断します。
85                 特定のアーカイブ形式のみに制限することもできます。
86             </para>
87         </listitem>
89         <listitem>
90             <para>
91                 <code>IsImage</code>: このバリデータはファイルが画像であるかどうかをチェックします。
92                 <code>MimeType</code> バリデータにもとづいて、
93                 jpg や gif といった画像ファイルであるかどうかを判断します。
94                 特定の画像形式のみに制限することもできます。
95             </para>
96         </listitem>
98         <listitem>
99             <para>
100                 <code>Hash</code>: このバリデータはファイルの内容のハッシュ値をチェックします。
101                 複数のアルゴリズムをサポートしています。
102             </para>
103         </listitem>
105         <listitem>
106             <para>
107                 <code>Md5</code>: このバリデータはファイルの内容の md5 ハッシュ値をチェックします。
108                 <code>Hash</code> バリデータをもとにしたもので、
109                 Md5 のみをサポートする便利でシンプルなバリデータを提供します。
110             </para>
111         </listitem>
113         <listitem>
114             <para>
115                 <code>MimeType</code>: このバリデータはファイルの <acronym>MIME</acronym> 型をチェックします。
116                 <acronym>MIME</acronym> 型の種類を検証し、指定したファイルの <acronym>MIME</acronym>
117                 型がそれと一致しないときにエラーをスローします。
118             </para>
119         </listitem>
121         <listitem>
122             <para>
123                 <code>NotExists</code>: このバリデータはファイルの存在をチェックします。
124                 指定したファイルが存在する場合にエラーをスローします。
125             </para>
126         </listitem>
128         <listitem>
129             <para>
130                 <code>Sha1</code>: このバリデータはファイルの内容の sha1 ハッシュ値をチェックします。
131                 <code>Hash</code> バリデータをもとにしたもので、
132                 sha1 のみをサポートする便利でシンプルなバリデータを提供します。
133             </para>
134         </listitem>
136         <listitem>
137             <para>
138                 <code>Size</code>: このバリデータは各ファイルのサイズをチェックします。
139                 最小値と最大値を指定し、そのいずれかに違反した場合にエラーをスローします。
140             </para>
141         </listitem>
143         <listitem>
144             <para>
145                 <code>Upload</code>: このバリデータは内部的に使用するもので、
146                 アップロード時に何らかの問題が発生していないかどうかをチェックします。
147                 自分でこれを設定してはいけません。これは、
148                 <classname>Zend_File_Transfer</classname> 自身が自動的に設定します。
149                 ですので、このバリデータのことは忘れてしまってもかまいません。
150                 ただ、そういうバリデータが存在することだけを覚えておきましょう。
151             </para>
152         </listitem>
154         <listitem>
155             <para>
156                 <code>WordCount</code>: このバリデータはファイル内の単語数をチェックします。
157                 最小値と最大値を指定し、そのいずれかに違反した場合にエラーをスローします。
158             </para>
159         </listitem>
160     </itemizedlist>
162     <sect2 id="zend.file.transfer.validators.usage">
163         <title>Zend_File_Transfer でのバリデータの使用法</title>
165         <para>
166             バリデータの使い方はきわめて簡単です。
167             バリデータを追加したり操作したりするには、次のメソッドを使用します。
168         </para>
170         <itemizedlist>
171             <listitem>
172                 <para>
173                     <methodname>isValid($files = null)</methodname>:
174                     指定したファイルがすべてのバリデータを使用したかどうかを調べます。
175                     <code>$files</code> には、実際のファイル名あるいは要素名、
176                     またはテンポラリファイル名を指定します。
177                 </para>
178             </listitem>
180             <listitem>
181                 <para>
182                     <code>addValidator($validator, $breakChainOnFailure, $options = null, $files =
183                     null)</code>: 指定したバリデータをバリデータスタックに追加します
184                     (オプションで、指定したファイルにだけ追加することもできます)。
185                     <code>$validator</code> に指定するのは、
186                     バリデータのインスタンスかあるいはバリデータの型の短い名前
187                     (たとえば 'Count') です。
188                 </para>
189             </listitem>
191             <listitem>
192                 <para>
193                     <code>addValidators(array $validators, $files =
194                         null)</code>: 指定した複数のバリデータをバリデータスタックに追加します。
195                     各エントリは、バリデータの型とオプションのペアか
196                     あるいはキー 'validator' を持つ配列となります
197                     (配列の場合、バリデータのオプションはインスタンスの作成時に設定するものとします)。
198                 </para>
199             </listitem>
201             <listitem>
202                 <para>
203                     <code>setValidators(array $validators, $files =
204                         null)</code>: 既存のバリデータを、指定したバリデータで上書きします。
205                     バリデータの指定方法は <methodname>addValidators()</methodname>
206                     と同じです。
207                 </para>
208             </listitem>
210             <listitem>
211                 <para>
212                     <methodname>hasValidator($name)</methodname>:
213                     バリデータが登録されているかどうかを調べます。
214                 </para>
215             </listitem>
217             <listitem>
218                 <para>
219                     <methodname>getValidator($name)</methodname>:
220                     前回登録されたバリデータを返します。
221                 </para>
222             </listitem>
224             <listitem>
225                 <para>
226                     <methodname>getValidators($files = null)</methodname>:
227                     登録されているバリデータを返します。<code>$files</code>
228                     を渡すと、そのファイルに関連するバリデータを返します。
229                 </para>
230             </listitem>
232             <listitem>
233                 <para>
234                     <methodname>removeValidator($name)</methodname>:
235                     前回登録されたバリデータを削除します。
236                 </para>
237             </listitem>
239             <listitem>
240                 <para>
241                     <methodname>clearValidators()</methodname>:
242                     登録されているすべてのバリデータを消去します。
243                 </para>
244             </listitem>
245         </itemizedlist>
247         <example id="zend.file.transfer.validators.usage.example">
248             <title>ファイル転送用のバリデータの追加</title>
250             <programlisting language="php"><![CDATA[
251 $upload = new Zend_File_Transfer();
253 // ファイルサイズを 20000 バイトに設定します
254 $upload->addValidator('Size', false, 20000);
256 // ファイルサイズの最小値を 20 バイト、最大値を 20000 バイトに設定します
257 $upload->addValidator('Size', false, array('min' => 20, 'max' => 20000));
259 // ファイルサイズの最小値を 20 バイト、最大値を 20000 バイトに設定し、
260 // 同時にファイルの数も設定します
261 $upload->setValidators(array(
262     'Size'  => array('min' => 20, 'max' => 20000),
263     'Count' => array('min' => 1, 'max' => 3),
265 ]]></programlisting>
266         </example>
268         <example id="zend.file.transfer.validators.usage.exampletwo">
269             <title>特定のファイルに対してのみのバリデータの適用</title>
271             <para>
272                 <methodname>addValidator()</methodname>、<methodname>addValidators()</methodname> および
273                 <methodname>setValidators()</methodname> は、それぞれ最後の引数
274                 <code>$files</code> を指定できます。
275                 この引数にはファイル名あるいはファイル名の配列を指定し、
276                 指定したファイルに対してのみバリデータを設定します。
277             </para>
279             <programlisting language="php"><![CDATA[
280 $upload = new Zend_File_Transfer();
282 // ファイルサイズを 20000 バイトとし、それを 'file2' にのみ適用します
283 $upload->addValidator('Size', false, 20000, 'file2');
284 ]]></programlisting>
285         </example>
287         <para>
288             一般的には、単純に <methodname>addValidators()</methodname>
289             メソッドをコールすることになるでしょう。
290             これは何度でもコールできます。
291         </para>
293         <example id="zend.file.transfer.validators.usage.examplemultiple">
294             <title>複数のバリデータの追加</title>
296             <para>
297                 単に <methodname>addValidator()</methodname> を複数回コールするほうがシンプルに書けます。
298                 個々のバリデータごとにコールするというわけです。
299                 これはコードの可読性も向上させ、保守性もあがります。
300                 すべてのメソッドは流れるようなインターフェイスを提供しているので、
301                 複数回のコールは以下のように書くことができます。
302             </para>
304             <programlisting language="php"><![CDATA[
305 $upload = new Zend_File_Transfer();
307 // ファイルサイズを 20000 バイトに設定します
308 $upload->addValidator('Size', false, 20000)
309        ->addValidator('Count', false, 2)
310        ->addValidator('Filessize', false, 25000);
311 ]]></programlisting>
313         </example>
315         <note>
316             <para>
317                 同じバリデータを複数回設定することもできます。
318                 しかしそんなことをすると、
319                 同じバリデータに異なるオプションを設定したときにおかしなことになるので注意しましょう。
320             </para>
321         </note>
323         <para>
324             最後に、単純にファイルをチェックするには <methodname>isValid()</methodname> を使用します。
325         </para>
327         <example id="zend.file.transfer.validators.usage.exampleisvalid">
328             <title>ファイルの検証</title>
330             <para>
331                 <methodname>isValid()</methodname> には、
332                 アップロードあるいはダウンロードされるファイル名だけでなく、
333                 テンポラリファイル名やフォーム要素の名前を指定することもできます。
334                 パラメータを省略したり null を指定したりした場合は、
335                 すべてのファイルが検証対象となります。
336             </para>
338             <programlisting language="php"><![CDATA[
339 $upload = new Zend_File_Transfer();
341 // ファイルサイズを 20000 バイトに設定します
342 $upload->addValidator('Size', false, 20000)
343        ->addValidator('Count', false, 2)
344        ->addValidator('Filessize', false, 25000);
346 if ($upload->isValid()) {
347     print "検証に失敗";
349 ]]></programlisting>
351         </example>
353         <note>
354             <para>
355                 <methodname>isValid()</methodname> は、
356                 ファイルを受け取った際にそれまでコールされていなければ自動的にコールされることに注意しましょう。
357             </para>
358         </note>
360         <para>
361             検証に失敗した場合は、何が問題だったのかについての情報を取得したくなることでしょう。
362             <methodname>getMessages()</methodname> を使うとすべての検証メッセージを配列で取得できます。
363             また <methodname>getErrors()</methodname> はすべてのエラーコードを返し、
364             <methodname>hasErrors()</methodname> は検証エラーが見つかった時点で <constant>TRUE</constant> を返します。
365         </para>
367     </sect2>
369     <sect2 id="zend.file.transfer.validators.count">
370         <title>Count バリデータ</title>
372         <para>
373             <code>Count</code> バリデータは、
374             渡されたファイルの数をチェックします。
375             次のオプションをサポートしています。
376         </para>
378         <itemizedlist>
379             <listitem>
380                 <para>
381                     <code>min</code>: 転送するファイル数の最小値。
382                 </para>
384                 <note>
385                     <para>
386                         このオプションを使用する場合は、
387                         このバリデータを最初にコールした際にファイル数の最小値を指定する必要があります。
388                         そうしないとエラーが返されます。
389                     </para>
390                 </note>
392                 <para>
393                     このオプションで、受け取りたいファイル数の最小値を指定できます。
394                 </para>
395             </listitem>
397             <listitem>
398                 <para>
399                     <code>max</code>: 転送するファイル数の最大値。
400                 </para>
402                 <para>
403                     このオプションで、受け取りたいファイル数を制限できます。
404                     それだけでなく、フォームで定義されている以上の数のファイルを送られるなどの攻撃を防ぐこともできます。
405                 </para>
406             </listitem>
407         </itemizedlist>
409         <para>
410             文字列あるいは整数値を指定してインスタンス化すると、その値は
411             <code>max</code> とみなされます。あるいは、後から <methodname>setMin()</methodname> や
412             <methodname>setMax()</methodname> でオプションを設定することもできますし、
413             <methodname>getMin()</methodname> や <methodname>getMax()</methodname>
414             で設定内容を取得することもできます。
415         </para>
417         <example id="zend.file.transfer.validators.count.example">
418             <title>Count バリデータの使用法</title>
420             <programlisting language="php"><![CDATA[
421 $upload = new Zend_File_Transfer();
423 // ファイルの数を最大 2 に制限します
424 $upload->addValidator('Count', false, 2);
426 // 最大でも 5 個、少なくとも 1 つのファイルが返されるよう制限します
427 $upload->addValidator('Count', false, array('min' =>1, 'max' => 5));
428 ]]></programlisting>
430         </example>
431         <note>
432             <para>
433                 このバリデータは、チェックしたファイルの数を内部に保存することに注意しましょう。
434                 最大値を超えたファイルはエラーを返します。
435             </para>
436         </note>
437     </sect2>
439     <sect2 id="zend.file.transfer.validators.crc32">
440         <title>Crc32 バリデータ</title>
442         <para>
443             <code>Crc32</code> バリデータは、転送されたファイルの中身のハッシュをチェックします。
444             このバリデータは、<acronym>PHP</acronym> の hash 拡張モジュールの crc32 アルゴリズムを使用します。
445             次のオプションをサポートしています。
446         </para>
448         <itemizedlist>
449             <listitem>
450                 <para>
451                     <code>*</code>: 任意のキーあるいは数値添字配列を設定します。
452                     この値を、検証対象のハッシュと比較します。
453                 </para>
455                 <para>
456                     異なるキーを使用して複数のハッシュを設定できます。
457                     すべてのキーの内容をチェックし、
458                     どれにも一致しなかった場合にのみ検証が失敗します。
459                 </para>
460             </listitem>
461         </itemizedlist>
463         <example id="zend.file.transfer.validators.crc32.example">
464             <title>Crc32 バリデータの使用法</title>
466             <programlisting language="php"><![CDATA[
467 $upload = new Zend_File_Transfer();
469 // アップロードされたファイルのハッシュが指定したものと一致するかどうかをチェックします
470 $upload->addValidator('Crc32', false, '3b3652f');
472 // ふたつの異なるハッシュを指定します
473 $upload->addValidator('Crc32', false, array('3b3652f', 'e612b69'));
474 ]]></programlisting>
475         </example>
476     </sect2>
478     <sect2 id="zend.file.transfer.validators.excludeextension">
479         <title>ExcludeExtension バリデータ</title>
481         <para>
482             <code>ExcludeExtension</code> バリデータは、
483             渡されたファイルの拡張子をチェックします。
484             次のオプションをサポートしています。
485         </para>
487         <itemizedlist>
488             <listitem>
489                 <para>
490                     <code>*</code>: 任意のキーあるいは数値添字配列を指定します。
491                     指定したファイルがこの拡張子を使用していないかどうかをチェックします。
492                 </para>
493             </listitem>
495             <listitem>
496                 <para>
497                     <code>case</code>: 検証時に大文字小文字を区別するかどうかを設定します。
498                     デフォルトでは大文字小文字を区別しません。
499                     このオプションはすべての拡張子に対して適用されることに注意しましょう。
500                 </para>
501             </listitem>
502         </itemizedlist>
504         <para>
505             このバリデータで複数の拡張子を指定するには、
506             カンマ区切りの文字列あるいは配列を使用します。
507             <methodname>setExtension()</methodname>、<methodname>addExtension()</methodname> および
508             <methodname>getExtension()</methodname> といったメソッドで拡張子の設定や取得が可能です。
509         </para>
511         <para>
512             大文字小文字を区別したチェックが有用なこともあります。
513             そのため、コンストラクタの 2 番目のパラメータ
514             <code>$case</code> を指定できるようになっています。これを <constant>TRUE</constant>
515             に設定すると、大文字小文字を区別して拡張子を検証します。
516         </para>
518         <example id="zend.file.transfer.validators.excludeextension.example">
519             <title>ExcludeExtension バリデータの使用法</title>
521             <programlisting language="php"><![CDATA[
522 $upload = new Zend_File_Transfer();
524 // 拡張子 php あるいは exe のファイルは許可しません
525 $upload->addValidator('ExcludeExtension', false, 'php,exe');
527 // 拡張子 php あるいは exe のファイルを許可しない設定を配列記法で行います
528 $upload->addValidator('ExcludeExtension', false, array('php', 'exe'));
530  // 大文字小文字を区別するチェックを行います
531 $upload->addValidator('ExcludeExtension',
532                       false,
533                       array('php', 'exe', 'case' => true));
534 $upload->addValidator('ExcludeExtension',
535                       false,
536                       array('php', 'exe', 'case' => true));
537 ]]></programlisting>
539         </example>
540         <note>
541             <para>
542                 このバリデータがチェックするのはファイルの拡張子のみであることに注意しましょう。
543                 実際の <acronym>MIME</acronym> 型などはチェックしません。
544             </para>
545         </note>
546     </sect2>
548     <sect2 id="zend.file.transfer.validators.excludemimetype">
549         <title>ExcludeMimeType バリデータ</title>
551         <para>
552             <code>ExcludeMimeType</code> バリデータは、
553             転送されるファイルの <acronym>MIME</acronym> 型をチェックします。
554             次のオプションをサポートしています。
555         </para>
557         <itemizedlist>
558             <listitem>
559                 <para>
560                     <code>*</code>: 任意のキー、あるいは数値添字配列を指定します。
561                     検証したい <acronym>MIME</acronym> 型を設定します。
562                 </para>
564                 <para>
565                     このオプションで、許可したくないファイルの <acronym>MIME</acronym> 型を定義できます。
566                 </para>
567             </listitem>
569             <listitem>
570                 <para>
571                     <code>headerCheck</code>: <constant>TRUE</constant> に設定すると、
572                     <emphasis>fileInfo</emphasis> あるいは <emphasis>mimeMagic</emphasis>
573                     拡張モジュールがない場合にも <acronym>HTTP</acronym>
574                     情報からファイルタイプをチェックします。このオプションのデフォルト値は
575                     <constant>FALSE</constant> です。
576                 </para>
577             </listitem>
578         </itemizedlist>
580         <para>
581             このバリデータで複数の <acronym>MIME</acronym> 型を指定するには、
582             カンマ区切りの文字列あるいは配列を使用します。
583             <methodname>setMimeType()</methodname>、<methodname>addMimeType()</methodname> および
584             <methodname>getMimeType()</methodname> といったメソッドで <acronym>MIME</acronym> 型の設定や取得が可能です。
585         </para>
587         <example id="zend.file.transfer.validators.excludemimetype.example">
588             <title>ExcludeMimeType バリデータの使用法</title>
590             <programlisting language="php"><![CDATA[
591 $upload = new Zend_File_Transfer();
593 // すべてのファイルで gif 画像の MIME 型を許可しません
594 $upload->addValidator('ExcludeMimeType', false, 'image/gif');
596 // すべてのファイルで gif 画像および jpg 画像の MIME 型を許可しません
597 $upload->addValidator('ExcludeMimeType', false, array('image/gif', 'image/jpeg');
599 // すべてのファイルで画像を許可しません
600 $upload->addValidator('ExcludeMimeType', false, 'image');
601 ]]></programlisting>
602         </example>
604         <para>
605             上の例で示したように、複数の <acronym>MIME</acronym> 型をひとつのグループとして扱うこともできます。
606             画像ファイルならすべて許可したいという場合は、<acronym>MIME</acronym> 型に 'image' と指定します。
607             'image' 以外にも 'audio'、'video'、'text などが使用可能です。
608         </para>
610         <note>
611             <para>
612                 <acronym>MIME</acronym> 型のグループを拒否してしまうと、意図していないものも含めて
613                 そのグループのすべての形式のファイルを拒否してしまうことに注意しましょう。
614                 たとえば 'image' を拒否したら 'image/jpeg' や 'image/vasa'
615                 などすべての画像形式を拒否することになります。
616                 すべての形式を拒否していいのかどうか不安な場合は、
617                 グループ指定ではなく個別の <acronym>MIME</acronym> 型を指定するようにしましょう。
618             </para>
619         </note>
620     </sect2>
622     <sect2 id="zend.file.transfer.validators.exists">
623         <title>Exists バリデータ</title>
625         <para>
626             <code>Exists</code> バリデータは、
627             指定したファイルの存在をチェックします。
628             次のオプションをサポートしています。
629         </para>
631         <itemizedlist>
632             <listitem>
633                 <para>
634                     <code>*</code>: 任意のキーあるいは数値添字配列を指定し、
635                     ファイルが指定したディレクトリに存在するかどうかをチェックします。
636                 </para>
637             </listitem>
638         </itemizedlist>
640         <para>
641             このバリデータで複数のディレクトリを指定するには、
642             カンマ区切りの文字列あるいは配列を使用します。
643             <methodname>setDirectory()</methodname>、<methodname>addDirectory()</methodname> および
644             <methodname>getDirectory()</methodname> といったメソッドでディレクトリの設定や取得が可能です。
645         </para>
647         <example id="zend.file.transfer.validators.exists.example">
648             <title>Exists バリデータの使用法</title>
650             <programlisting language="php"><![CDATA[
651 $upload = new Zend_File_Transfer();
653 // temp ディレクトリをチェック対象に追加します
654 $upload->addValidator('Exists', false, '\temp');
656 // ふたつのディレクトリを配列記法で追加します
657 $upload->addValidator('Exists',
658                       false,
659                       array('\home\images', '\home\uploads'));
660 ]]></programlisting>
662         </example>
663         <note>
664             <para>
665                 このバリデータは、ファイルが存在するかどうかをすべてのディレクトリでチェックすることに注意しましょう。
666                 指定したディレクトリのうちのどこかひとつでもファイルが存在しなかった場合に検証が失敗します。
667             </para>
668         </note>
669     </sect2>
671     <sect2 id="zend.file.transfer.validators.extension">
672         <title>Extension バリデータ</title>
674         <para>
675             <code>Extension</code> バリデータは、
676             渡されたファイルの拡張子をチェックします。
677             次のオプションをサポートしています。
678         </para>
680         <itemizedlist>
681             <listitem>
682                 <para>
683                     <code>*</code>: 任意のキーあるいは数値添字配列を設定し、
684                     指定したファイルがこの拡張子かどうかをチェックします。
685                 </para>
686             </listitem>
688             <listitem>
689                 <para>
690                     <code>case</code>: チェックの際に大文字小文字を区別するかどうかを設定します。
691                     デフォルトでは大文字小文字を区別しません。
692                     このオプションは、すべての拡張子に対して適用されることに注意しましょう。
693                 </para>
694             </listitem>
695         </itemizedlist>
697         <para>
698             このバリデータで複数の拡張子を指定するには、
699             カンマ区切りの文字列あるいは配列を使用します。
700             <methodname>setExtension()</methodname>、<methodname>addExtension()</methodname> および
701             <methodname>getExtension()</methodname> といったメソッドで拡張子の設定や取得が可能です。
702         </para>
704         <para>
705             場合によっては大文字小文字を区別してチェックしたくなることもあるでしょう。
706             そんなときのために、コンストラクタで 2 番目のパラメータ
707             <code>$case</code> を指定できます。これを <constant>TRUE</constant>
708             にすると、大文字小文字を区別して拡張子のチェックを行います。
709         </para>
711         <example id="zend.file.transfer.validators.extension.example">
712             <title>Extension バリデータの使用法</title>
714             <programlisting language="php"><![CDATA[
715 $upload = new Zend_File_Transfer();
717 // 拡張子を jpg と png のみに制限します
718 $upload->addValidator('Extension', false, 'jpg,png');
720 // 配列形式で、拡張子を jpg と png のみに制限します
721 $upload->addValidator('Extension', false, array('jpg', 'png'));
723 // 大文字小文字を区別したチェックを行います
724 $upload->addValidator('Extension', false, array('mo', 'png', 'case' => true));
725 if (!$upload->isValid('C:\temp\myfile.MO')) {
726     print 'Not valid because MO and mo do not match with case sensitivity;
728 ]]></programlisting>
730         </example>
731         <note>
732             <para>
733                 このバリデータがチェックするのはファイルの拡張子のみであることに注意しましょう。
734                 実際の <acronym>MIME</acronym> 型などはチェックしません。
735             </para>
736         </note>
737     </sect2>
739     <sect2 id="zend.file.transfer.validators.filessize">
740         <title>FilesSize バリデータ</title>
742         <para>
743             <code>FilesSize</code> バリデータは、
744             すべてのファイルの合計サイズをチェックします。
745             次のオプションをサポートしています。
746         </para>
748         <itemizedlist>
749             <listitem>
750                 <para>
751                     <code>min</code>: ファイルサイズの総合計の最小値を設定します。
752                     このオプションで、転送されるファイルの合計サイズの最小値を指定します。
753                 </para>
754             </listitem>
756             <listitem>
757                 <para>
758                     <code>max</code>: ファイルサイズの総合計の最大値を設定します。
759                 </para>
761                 <para>
762                     このオプションで、転送されるファイルの合計サイズの最大値を指定できます。
763                     個別のファイルのサイズはチェックしません。
764                 </para>
765             </listitem>
767             <listitem>
768                 <para>
769                     <code>bytestring</code>: 失敗したときに返す情報を、
770                     人間が読みやすい形式にするかファイルサイズそのものにするかを設定します。
771                 </para>
773                 <para>
774                     このオプションで、ユーザが受け取る結果が '10864' あるいは '10MB'
775                     のどちらの形式になるのかを指定できます。デフォルト値は
776                     <constant>TRUE</constant> で、'10MB' 形式となります。
777                 </para>
778             </listitem>
779         </itemizedlist>
781         <para>
782             文字列を指定してインスタンス化すると、その値は
783             <code>max</code> とみなされます。
784             後から <methodname>setMin()</methodname> や
785             <methodname>setMax()</methodname> でオプションを設定することもできますし、
786             <methodname>getMin()</methodname> や <methodname>getMax()</methodname>
787             で設定内容を取得することもできます。
788         </para>
790         <para>
791             サイズの指定には SI 記法も使えます。
792             これは多くのオペレーティングシステムでもサポートされているものです。
793             <emphasis>20000 bytes</emphasis>
794             と書くかわりに、<emphasis>20kB</emphasis>
795             とすることができるのです。すべての単位は、1024 単位に変換されます。
796             使用できる単位は <code>kB</code>、<code>MB</code>、
797             <code>GB</code>、<code>TB</code>、<code>PB</code> および <code>EB</code>
798             です。先ほど説明したとおり、1kB は 1024 バイトであることに注意する必要があります。
799         </para>
801         <example id="zend.file.transfer.validators.filessize.example">
802             <title>FilesSize バリデータの使用法</title>
804             <programlisting language="php"><![CDATA[
805 $upload = new Zend_File_Transfer();
807 // アップロードされるファイルサイズの合計を 40000 バイトまでに制限します
808 $upload->addValidator('FilesSize', false, 40000);
810 // アップロードされるファイルサイズの合計を最大 4MB、最小 10kB に制限します
811 $upload->addValidator('FilesSize',
812                       false,
813                       array('min' => '10kB', 'max' => '4MB'));
815 // さきほどと同じですが、結果をプレーンなファイルサイズで返します
816 $upload->addValidator('FilesSize',
817                       false,
818                       array('min' => '10kB',
819                             'max' => '4MB',
820                             'bytestring' => false));
821 ]]></programlisting>
823         </example>
824         <note>
825             <para>
826                 このバリデータは、チェックしたファイルのサイズを内部に保存することに注意しましょう。
827                 最大値を超えたファイルはエラーを返します。
828             </para>
829         </note>
830     </sect2>
832     <sect2 id="zend.file.transfer.validators.imagesize">
833         <title>ImageSize バリデータ</title>
835         <para>
836             <code>ImageSize</code> バリデータは、
837             画像ファイルのサイズをチェックします。
838             次のオプションをサポートしています。
839         </para>
841         <itemizedlist>
842             <listitem>
843                 <para>
844                     <code>minheight</code>: 画像の高さの最小値を設定します。
845                 </para>
846             </listitem>
848             <listitem>
849                 <para>
850                     <code>maxheight</code>: 画像の高さの最大値を設定します。
851                 </para>
852             </listitem>
854             <listitem>
855                 <para>
856                     <code>minwidth</code>: 画像の幅の最小値を設定します。
857                 </para>
858             </listitem>
860             <listitem>
861                 <para>
862                     <code>maxwidth</code>: 画像の幅の最大値を設定します。
863                 </para>
864             </listitem>
865         </itemizedlist>
867         <para>
868             <methodname>setImageMin()</methodname> や <methodname>setImageMax()</methodname>
869             で最小値・最大値を設定することもできますし、
870             <methodname>getMin()</methodname> や <methodname>getMax()</methodname>
871             で設定内容を取得することもできます。
872         </para>
874         <para>
875             利便性を考慮して、<methodname>setImageWidth()</methodname> や <methodname>setImageHeight()</methodname>
876             といったメソッドも用意されています。これは、幅や高さの最小値と最大値を設定します。
877             もちろん、それに対応する <methodname>getImageWidth()</methodname> や <methodname>getImageHeight()</methodname>
878             も使用可能です。
879         </para>
881         <para>
882             サイズの検証をしたくない場合は、その部分に値 <constant>NULL</constant> を設定します。
883         </para>
885         <example id="zend.file.transfer.validators.imagesize.example">
886             <title>ImageSize バリデータの使用法</title>
888             <programlisting language="php"><![CDATA[
889 $upload = new Zend_File_Transfer();
891 // 画像の高さを 100-200 ピクセル、幅を 40-80 ピクセルに制限します
892 $upload->addValidator('ImageSize', false,
893                       array('minwidth' => 40,
894                             'maxwidth' => 80,
895                             'minheight' => 100,
896                             'maxheight' => 200)
897                       );
899 // 検証用の幅をリセットします
900 $upload->setImageWidth(array('minwidth' => 20, 'maxwidth' => 200));
901 ]]></programlisting>
902         </example>
903     </sect2>
905     <sect2 id="zend.file.transfer.validators.iscompressed">
906         <title>IsCompressed バリデータ</title>
908         <para>
909             <code>IsCompressed</code> バリデータは、
910             転送されたファイルが zip や arc のような圧縮アーカイブ形式であるかどうかをチェックします。
911             このバリデータは <code>MimeType</code> バリデータを使用しており、
912             同じメソッドとオプションをサポートしています。
913             このバリデータを特定の圧縮形式のみに制限するには、
914             そのメソッドを使用します。
915         </para>
917         <example id="zend.file.transfer.validators.iscompressed.example">
918             <title>IsCompressed バリデータの使用法</title>
920             <programlisting language="php"><![CDATA[
921 $upload = new Zend_File_Transfer();
923 // アップロードされたファイルが圧縮アーカイブであるかどうかチェックします
924 $upload->addValidator('IsCompressed', false);
926 // zip ファイルのみを対象とするようこのバリデータを制限します
927 $upload->addValidator('IsCompressed', false, array('application/zip'));
929 // よりシンプルな記法で、zip ファイルのみを対象とするようこのバリデータを制限します
930 $upload->addValidator('IsCompressed', false, 'zip');
931 ]]></programlisting>
932         </example>
934         <note>
935             <para>
936                 指定した <acronym>MIME</acronym>
937                 型がアーカイブ型であるかどうかのチェックは行われないことに注意しましょう。
938                 たとえば gif ファイルがこのバリデータを通過するように設定することも可能です。
939                 アーカイブ型かどうかのチェックには 'MimeType'
940                 バリデータを使用したほうが読みやすいコードとなります。
941             </para>
942         </note>
943     </sect2>
945     <sect2 id="zend.file.transfer.validators.isimage">
946         <title>IsImage バリデータ</title>
948         <para>
949             <code>IsImage</code> バリデータは、
950             転送されたファイルが gif や jpeg のような画像ファイルであるかどうかをチェックします。
951             このバリデータは <code>MimeType</code> バリデータを使用しており、
952             同じメソッドとオプションをサポートしています。
953             このバリデータを特定の画像形式のみに制限するには、
954             そのメソッドを使用します。
955         </para>
957         <example id="zend.file.transfer.validators.isimage.example">
958             <title>IsImage バリデータの使用法</title>
960             <programlisting language="php"><![CDATA[
961 $upload = new Zend_File_Transfer();
963 // アップロードされたファイルが画像ファイルであるかどうかチェックします
964 $upload->addValidator('IsImage', false);
966 // gif ファイルのみを対象とするようこのバリデータを制限します
967 $upload->addValidator('IsImage', false, array('application/gif'));
969 // よりシンプルな記法で、gif ファイルのみを対象とするようこのバリデータを制限します
970 $upload->addValidator('IsImage', false, 'jpeg');
971 ]]></programlisting>
972         </example>
974         <note>
975             <para>
976                 指定した <acronym>MIME</acronym>
977                 型が image 型であるかどうかのチェックは行われないことに注意しましょう。
978                 たとえば gif ファイルがこのバリデータを通過するように設定することも可能です。
979                 image 型かどうかのチェックには 'MimeType'
980                 バリデータを使用したほうが読みやすいコードとなります。
981             </para>
982         </note>
983     </sect2>
985     <sect2 id="zend.file.transfer.validators.hash">
986         <title>Hash バリデータ</title>
988         <para>
989             <code>Hash</code> バリデータは、転送されたファイルの中身のハッシュをチェックします。
990             このバリデータは、<acronym>PHP</acronym> の hash 拡張モジュールを使用します。
991             次のオプションをサポートしています。
992         </para>
994         <itemizedlist>
995             <listitem>
996                 <para>
997                     <code>*</code>: 任意のキーあるいは数値添字配列を設定します。
998                     この値と、検証対象のハッシュとを比較します。
999                 </para>
1001                 <para>
1002                     配列形式で複数のハッシュを設定できます。
1003                     すべてのキーの内容をチェックし、
1004                     どれにも一致しなかった場合にのみ検証が失敗します。
1005                 </para>
1006             </listitem>
1008             <listitem>
1009                 <para>
1010                     <code>algorithm</code>: ハッシュの取得に使用するアルゴリズムを設定します。
1011                 </para>
1013                 <para>
1014                     複数のアルゴリズムを設定するには、<methodname>addHash()</methodname>
1015                     メソッドを複数回コールします。
1016                 </para>
1017             </listitem>
1018         </itemizedlist>
1020         <example id="zend.file.transfer.validators.hash.example">
1021             <title>Hash バリデータの使用法</title>
1023             <programlisting language="php"><![CDATA[
1024 $upload = new Zend_File_Transfer();
1026 // アップロードされたファイルのハッシュが指定したものと一致するかどうかをチェックします
1027 $upload->addValidator('Hash', false, '3b3652f');
1029 // ふたつの異なるハッシュを指定します
1030 $upload->addValidator('Hash', false, array('3b3652f', 'e612b69'));
1032 // 別のアルゴリズムでチェックを行います
1033 $upload->addValidator('Hash',
1034                       false,
1035                       array('315b3cd8273d44912a7',
1036                             'algorithm' => 'md5'));
1037 ]]></programlisting>
1038         </example>
1040         <note>
1041             <para>
1042                 このバリデータは、役 34 のハッシュアルゴリズムをサポートしています。
1043                 よく使われるものとしては 'crc32' や 'md5' そして 'sha1' があります。
1044                 サポートするアルゴリズムの一覧は、
1045                 <ulink url="http://php.net">php.net</ulink> の
1046                 <ulink url="http://php.net/hash_algos">hash_algos メソッド</ulink>
1047                 を参照ください。
1048             </para>
1049         </note>
1050     </sect2>
1052     <sect2 id="zend.file.transfer.validators.md5">
1053         <title>Md5 バリデータ</title>
1055         <para>
1056             <code>Md5</code> バリデータは、転送されたファイルの中身のハッシュをチェックします。
1057             このバリデータは、<acronym>PHP</acronym> の hash 拡張モジュールの md5 アルゴリズムを使用します。
1058             次のオプションをサポートしています。
1059         </para>
1061         <itemizedlist>
1062             <listitem>
1063                 <para>
1064                     <code>*</code>: 任意のキーあるいは数値添字配列を設定します。
1065                 </para>
1067                 <para>
1068                     配列形式で複数のハッシュを設定できます。
1069                     すべてのキーの内容をチェックし、
1070                     どれにも一致しなかった場合にのみ検証が失敗します。
1071                 </para>
1072             </listitem>
1073         </itemizedlist>
1075         <example id="zend.file.transfer.validators.md5.example">
1076             <title>Md5 バリデータの使用法</title>
1078             <programlisting language="php"><![CDATA[
1079 $upload = new Zend_File_Transfer();
1081 // アップロードされたファイルのハッシュが指定したものと一致するかどうかをチェックします
1082 $upload->addValidator('Md5', false, '3b3652f336522365223');
1084 // ふたつの異なるハッシュを指定します
1085 $upload->addValidator('Md5',
1086                       false,
1087                       array('3b3652f336522365223',
1088                             'eb3365f3365ddc65365'));
1089 ]]></programlisting>
1090         </example>
1091     </sect2>
1093     <sect2 id="zend.file.transfer.validators.mimetype">
1094         <title>MimeType バリデータ</title>
1096         <para>
1097             <code>MimeType</code> バリデータは、
1098             転送されるファイルの <acronym>MIME</acronym> 型をチェックします。
1099             次のオプションをサポートしています。
1100         </para>
1102         <itemizedlist>
1103             <listitem>
1104                 <para>
1105                     <code>*</code>: 任意のキーあるいは数値添字配列を指定します。
1106                    検証したい <acronym>MIME</acronym> 型を設定します。
1107                 </para>
1109                 <para>
1110                     許可したいファイルの <acronym>MIME</acronym> 型を定義します。
1111                 </para>
1112             </listitem>
1114             <listitem>
1115                 <para>
1116                     <code>headerCheck</code>: <constant>TRUE</constant> に設定すると、
1117                     <emphasis>fileInfo</emphasis> あるいは <emphasis>mimeMagic</emphasis>
1118                     拡張モジュールがない場合にも <acronym>HTTP</acronym>
1119                     情報からファイルタイプをチェックします。このオプションのデフォルト値は
1120                     <constant>FALSE</constant> です。
1121                 </para>
1122             </listitem>
1124             <listitem>
1125                 <para>
1126                     <code>magicfile</code>: 使用する magicfile。
1127                 </para>
1129                 <para>
1130                     このオプションで、使用する magicfile を定義します。
1131                     指定しなかったり空だったりした場合は、定数 MAGIC
1132                     を使用します。このオプションは Zend Framework 1.7.1
1133                     以降で使用可能です。
1134                 </para>
1135             </listitem>
1136         </itemizedlist>
1138         <para>
1139             このバリデータで複数の <acronym>MIME</acronym> 型を指定するには、
1140             カンマ区切りの文字列あるいは配列を使用します。
1141             <methodname>setMimeType()</methodname>、<methodname>addMimeType()</methodname> および
1142             <methodname>getMimeType()</methodname> といったメソッドで <acronym>MIME</acronym> 型の設定や取得が可能です。
1143         </para>
1145         <para>
1146             fileinfo が使用する magicfile を設定するには、オプション 'magicfile' を使用します。
1147             さらに、<methodname>setMagicFile()</methodname> や <methodname>getMagicFile()</methodname>
1148             といったメソッドで後から magicfile の設定や取得が可能です。
1149             これらのメソッドは Zend Framework 1.7.1 以降で使用可能です。
1150         </para>
1152         <example id="zend.file.transfer.validators.mimetype.example">
1153             <title>MimeType バリデータの使用法</title>
1155             <programlisting language="php"><![CDATA[
1156 $upload = new Zend_File_Transfer();
1158 // MIME 型を制限し、gif 画像のみを許可するようにします
1159 $upload->addValidator('MimeType', false, 'image/gif');
1161 // すべてのファイルが gif および jpeg 画像でなければならないように MIME 型を制限します
1162 $upload->addValidator('MimeType', false, array('image/gif', 'image/jpeg');
1164 // すべてのファイルが画像であるように MIME 型を制限します
1165 $upload->addValidator('MimeType', false, 'image');
1167 // 別の magicfile を使用します
1168 $upload->addValidator('MimeType',
1169                       false,
1170                       array('image',
1171                             'magicfile' => '/path/to/magicfile.mgx'));
1172 ]]></programlisting>
1173         </example>
1175         <para>
1176             上の例で示したように、複数の <acronym>MIME</acronym> 型をひとつのグループとして扱うこともできます。
1177             画像ファイルならすべて許可したいという場合は、<acronym>MIME</acronym> 型に 'image' と指定します。
1178             'image' 以外にも 'audio'、'video'、'text などが使用可能です。
1179         </para>
1181         <note>
1182             <para>
1183                 <acronym>MIME</acronym> 型のグループを許可してしまうと、アプリケーション側で対応しているか否かにかかわらず
1184                 そのグループのすべての形式のファイルを許可してしまうことに注意しましょう。
1185                 たとえば 'image' を許可したら 'image/xpixmap' や 'image/vasa'
1186                 も受け付けることになりますが、おそらくこれは問題となるでしょう。
1187                 アプリケーション側ですべての形式を処理できるかどうか不安なら、
1188                 グループ指定ではなく個別の <acronym>MIME</acronym> 型を指定するようにしましょう。
1189             </para>
1190         </note>
1192         <note>
1193             <para>
1194                 このコンポーネントは、もし <code>fileinfo</code>
1195                 拡張モジュールが使用可能ならそれを使用します。使用できない場合は
1196                 <code>mime_content_type</code> 関数を使用します。
1197                 この関数コールが失敗した場合は、<acronym>HTTP</acronym> で渡された <acronym>MIME</acronym> 型を使用します。
1198             </para>
1200             <para>
1201                 <code>fileinfo</code> も <code>mime_content_type</code>
1202                 も使えない場合は、セキュリティの問題に注意する必要があります。
1203                 <acronym>HTTP</acronym> から取得する <acronym>MIME</acronym> 型はセキュアではなく、
1204                 容易に改ざんできます。
1205             </para>
1206         </note>
1207     </sect2>
1209     <sect2 id="zend.file.transfer.validators.notexists">
1210         <title>NotExists バリデータ</title>
1212         <para>
1213             <code>NotExists</code> バリデータは、
1214             指定したファイルの存在をチェックします。
1215             次のオプションをサポートしています。
1216         </para>
1218         <itemizedlist>
1219             <listitem>
1220                 <para>
1221                     <code>*</code>: 任意のキーあるいは数値添字配列を設定し、
1222                     ファイルが指定したディレクトリに存在しないかどうかをチェックします。
1223                 </para>
1224             </listitem>
1225         </itemizedlist>
1227         <para>
1228             このバリデータで複数のディレクトリを指定するには、
1229             カンマ区切りの文字列あるいは配列を使用します。
1230             <methodname>setDirectory()</methodname>、<methodname>addDirectory()</methodname> および
1231             <methodname>getDirectory()</methodname> といったメソッドでディレクトリの設定や取得が可能です。
1232         </para>
1234         <example id="zend.file.transfer.validators.notexists.example">
1235             <title>NotExists バリデータの使用法</title>
1237             <programlisting language="php"><![CDATA[
1238 $upload = new Zend_File_Transfer();
1240 // temp ディレクトリをチェック対象に追加します
1241 $upload->addValidator('NotExists', false, '\temp');
1243 // ふたつのディレクトリを配列記法で追加します
1244 $upload->addValidator('NotExists', false,
1245                       array('\home\images',
1246                             '\home\uploads')
1247                      );
1248 ]]></programlisting>
1250         </example>
1251         <note>
1252             <para>
1253                 このバリデータは、ファイルが存在しないかどうかをすべてのディレクトリでチェックすることに注意しましょう。
1254                 指定したディレクトリのうちのどこかひとつでもファイルが存在した場合に検証が失敗します。
1255             </para>
1256         </note>
1257     </sect2>
1259 <sect2 id="zend.file.transfer.validators.sha1">
1260         <title>Sha1 バリデータ</title>
1262         <para>
1263             <code>Sha1</code> バリデータは、転送されたファイルの中身のハッシュをチェックします。
1264             このバリデータは、<acronym>PHP</acronym> の hash 拡張モジュールの sha1 アルゴリズムを使用します。
1265             次のオプションをサポートしています。
1266         </para>
1268         <itemizedlist>
1269             <listitem>
1270                 <para>
1271                     <code>*</code>: 任意のキーあるいは数値添字配列を設定します。
1272                 </para>
1274                 <para>
1275                     配列形式で複数のハッシュを設定できます。
1276                     すべてのキーの内容をチェックし、
1277                     どれにも一致しなかった場合にのみ検証が失敗します。
1278                 </para>
1279             </listitem>
1280         </itemizedlist>
1282         <example id="zend.file.transfer.validators.sha1.example">
1283             <title>sha1 バリデータの使用法</title>
1285             <programlisting language="php"><![CDATA[
1286 $upload = new Zend_File_Transfer();
1288 // アップロードされたファイルのハッシュが指定したものと一致するかどうかをチェックします
1289 $upload->addValidator('sha1', false, '3b3652f336522365223');
1291 // ふたつの異なるハッシュを指定します
1292 $upload->addValidator('Sha1',
1293                       false, array('3b3652f336522365223',
1294                                    'eb3365f3365ddc65365'));
1295 ]]></programlisting>
1296         </example>
1297     </sect2>
1299     <sect2 id="zend.file.transfer.validators.size">
1300         <title>Size バリデータ</title>
1302         <para>
1303             <code>Size</code> バリデータは、
1304             個々のファイルのサイズをチェックします。
1305             次のオプションをサポートしています。
1306         </para>
1308         <itemizedlist>
1309             <listitem>
1310                 <para>
1311                     <code>Min</code>: ファイルサイズの最小値を設定します。
1312                 </para>
1314                 <para>
1315                     このオプションで、転送されるファイルの個々のサイズの最小値を指定できます。
1316                 </para>
1317             </listitem>
1319             <listitem>
1320                 <para>
1321                     <code>Max</code>: ファイルサイズの最大値を設定します。
1322                 </para>
1324                 <para>
1325                     このオプションで、転送されるファイルの個々のサイズを制限できます。
1326                 </para>
1327             </listitem>
1329             <listitem>
1330                 <para>
1331                     <code>bytestring</code>: 失敗したときに返す情報を、
1332                     人間が読みやすい形式にするかファイルサイズそのものにするかを設定します。
1333                 </para>
1335                 <para>
1336                     このオプションで、ユーザが受け取る結果が '10864' あるいは '10MB'
1337                     のどちらの形式になるのかを指定できます。デフォルト値は
1338                     <constant>TRUE</constant> で、'10MB' 形式となります。
1339                 </para>
1340             </listitem>
1341         </itemizedlist>
1343         <para>
1344             文字列を指定してインスタンス化すると、その値は
1345             <code>max</code> とみなされます。あるいは、後から <methodname>setMin()</methodname> や
1346             <methodname>setMax()</methodname> でオプションを設定することもできますし、
1347             <methodname>getMin()</methodname> や <methodname>getMax()</methodname>
1348             で設定内容を取得することもできます。
1349         </para>
1351         <para>
1352             サイズの指定には SI 記法も使えます。
1353             これは多くのオペレーティングシステムでもサポートされているものです。
1354             <emphasis>20000 bytes</emphasis>
1355             と書くかわりに、<emphasis>20kB</emphasis>
1356             とすることができるのです。すべての単位は、1024 単位に変換されます。
1357             使用できる単位は <code>kB</code>、<code>MB</code>、
1358             <code>GB</code>、<code>TB</code>、<code>PB</code> および <code>EB</code>
1359             です。先ほど説明したとおり、1kB は 1024 バイトであることに注意する必要があります。
1360         </para>
1362         <example id="zend.file.transfer.validators.size.example">
1363             <title>Size バリデータの使用法</title>
1365             <programlisting language="php"><![CDATA[
1366 $upload = new Zend_File_Transfer();
1368 // ファイルサイズを 40000 バイトまでに制限します
1369 $upload->addValidator('Size', false, 40000);
1371 // 指定したファイルのサイズを最大 4MB、最小 10kB に制限し、
1372 // さらにエラー時に返す結果をユーザに優しい形式ではなく
1373 // プレーンな数値とします
1374 $upload->addValidator('Size',
1375                       false,
1376                       array('min' => '10kB',
1377                             'max' => '4MB',
1378                             'bytestring' => false));
1379 ]]></programlisting>
1380         </example>
1381     </sect2>
1383     <sect2 id="zend.file.transfer.validators.wordcount">
1384         <title>WordCount バリデータ</title>
1386         <para>
1387             <code>WordCount</code> バリデータは、
1388             指定したファイル内の単語数をチェックします。
1389             次のオプションをサポートしています。
1390         </para>
1392         <itemizedlist>
1393             <listitem>
1394                 <para>
1395                     <code>min</code>: 見つかった単語数の最小値を設定します。
1396                 </para>
1397             </listitem>
1399             <listitem>
1400                 <para>
1401                     <code>max</code>: 見つかった単語数の最大値を設定します。
1402                 </para>
1403             </listitem>
1404         </itemizedlist>
1406         <para>
1407             文字列あるいは整数値を指定してインスタンス化すると、その値は
1408             <code>max</code> とみなされます。あるいは、後から <methodname>setMin()</methodname> や
1409             <methodname>setMax()</methodname> でオプションを設定することもできますし、
1410             <methodname>getMin()</methodname> や <methodname>getMax()</methodname>
1411             で設定内容を取得することもできます。
1412         </para>
1414         <example id="zend.file.transfer.validators.wordcount.example">
1415             <title>WordCount バリデータの使用法</title>
1417             <programlisting language="php"><![CDATA[
1418 $upload = new Zend_File_Transfer();
1420 // ファイル内の単語数を 2000 語までに制限します
1421 $upload->addValidator('WordCount', false, 2000);
1423 // ファイル内の単語数を最大 5000 語、最小 1000 語に制限します
1424 $upload->addValidator('WordCount', false, array('min' => 1000, 'max' => 5000));
1425 ]]></programlisting>
1427         </example>
1428     </sect2>
1429 </sect1>
1430 <!--
1431 vim:se ts=4 sw=4 tw=80 et: