Programmer's Reference Guide

Zend_File

Zend_File_Transfer

Zend_File_Transfer を使用すると、 ファイルのアップロードやダウンロードを管理することができます。 組み込みのバリデータを使ってファイルを検証したり、 フィルタによってファイルを変更したりという機能があります。 Zend_File_Transfer はアダプタ形式を採用しており、 HTTP や FTP、WEBDAV などのさまざまな転送プロトコルを同じ API で使用することができます。

注意: 制限
1.6.0 に同梱される現在の Zend_File_Transfer の実装では、HTTP Post によるアップロードにしか対応していません。 ファイルのダウンロードやその他のアダプタについては次のリリースで追加される予定です。 実装されていないメソッドを実行すると例外をスローします。 したがって、実際のところは Zend_File_Transfer_Adapter_Http のインスタンスを直接操作することになります。 これは、将来複数のアダプタが使用可能になった段階で変更される予定です。

Zend_File_Transfer の使い方はきわめて単純です。 ふたつの部分から成り立っており、 アップロードを行う HTTP フォームとアップロードされたファイルを Zend_File_Transfer で処理するコードを作成します。 次の例を参照ください。

例1 シンプルなファイルアップロードフォーム

この例は、Zend_File_Transfer を使った基本的なファイルアップロード処理です。 まずはファイルアップロードフォームから。 今回の例では。アップロードしたいファイルはひとつです。

<form enctype="multipart/form-data" action="/file/upload" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
        アップロードするファイルを選択: <input name="uploadedfile" type="file" />
    <br />
    <input type="submit" value="アップロード" />
</form>

HTML を直接作成するのではなく、利便性を考慮して Zend_Form_Element_File を使っていることに注意しましょう。

次はアップロードしたファイルを受け取る側です。 今回の例では、受け取る側は /file/upload となります。そこで、file コントローラにアクション upload を作成します。

$adapter = new Zend_File_Transfer_Adapter_Http();

$adapter->setDestination('C:\temp');

if (!$adapter->receive()) {
    $messages = $adapter->getMessages();
    echo implode("\n", $messages);
}

        

ご覧いただいておわかりのとおり、最もシンプルな使用法は保存先を setDestination メソッドで指定して receive() メソッドをコールするというものです。 アップロード時に何らかのエラーが発生した場合は、 返された例外の中でその情報を取得することができます。

注意: 注意
これは最もシンプルな例であることを忘れないようにしましょう。 これをそのまま実際の環境で使用しては いけません。 深刻なセキュリティ問題を引き起こしてしまいます。 常にバリデータを使用してセキュリティを向上させるようにしなければなりません。


Zend_File
blog comments powered by Disqus

Select a Version

Languages Available

Components

Search the Manual