Zend-framework-file-uploading
Zend Framework-ファイルのアップロード
ファイルのアップロードは、フォームプログラミングの主要な概念の1つです。 Zendフレームワークは、 zend-form および zend-inputfilter コンポーネントを介してファイルをアップロードするために必要なすべてのアイテムを提供します。
FileInputクラス
zend-inputfilterコンポーネントは、htmlファイルの入力要素( <input type = 'file'/> )を処理するZend \ InputFilter \ FileInputクラスを提供します。 FileInput は、いくつかの例外を除いて、他の入力フィルターに似ています。 彼らは次のとおりです-
- PHPはアップロードされたファイルの詳細を $ _ FILES グローバル配列に保存するため、FileInputは$ _FILESのみを介してアップロードされたファイル情報を収集します。
- FileInputクラスがデータを処理する前に検証を行う必要があります。 これは、他の入力フィルターの反対の動作です。 Zend \ Validator \ File \ UploadFileは、使用されるデフォルトのバリデーターです。 UploadFile *は、ファイル入力の詳細を検証します。
フォームにファイルアップロードタイプを追加するには、入力タイプ File を使用する必要があります。 部分的なコードは次のとおりです-
ファイルのアップロードで使用される別のクラスは、Zend \ Filter \ File \ RenameUploadです。 RenameUpload は、アップロードされたファイルを目的の場所に移動するために使用されます。 ファイルフィルタを使用する部分的なクラスは次のとおりです-
ここで、 RenameUpload のオプションは次のとおりです-
- target -アップロードされたファイルの宛先パス。
- randomize -アップロードされたファイルの重複を防ぐために、ランダムな文字列を追加します。
- use_upload_extension -アップロードされたファイルにファイル拡張子をターゲットに追加します。
ファイルのアップロード-作業例
チュートリアルモジュールを変更して、写真のアップロード機能を追加しましょう。
データベーステーブルを変更する
私たちは、次のSQLコマンドを実行することにより、ブックテーブルに*画像パス*列を追加しましょう-
BookForm.phpを更新する
ファイル入力要素を追加して、本のフォームに画像をアップロードします– myapp/module/Tutorial/src/Model/BookForm.php。
BookFormクラスの __ constructmethod に次のコードを含めます。
Book.phpを更新する
Bookクラスで次の変更を行います– myapp/module/Tutorial/src/Model/Book.php。
- 画像の新しいプロパティ imagepath を追加します。
- 以下に示すように getInputFilter メソッドを更新します-
- ファイル入力要素に FileInput フィルターを追加します。
- UploadFile 検証を設定して、ファイル入力要素を検証します。
- RenameUpload を構成して、アップロードされたファイルを適切な宛先に移動します。
部分的なコードのリストは次のとおりです-
- exchangeArray メソッドを更新して、 imagepath プロパティを含めます。 イメージパスは、フォームまたはデータベースから取得できます。 imagepathがフォームから来ている場合、形式は次の仕様を持つ配列になります-
- イメージパスがデータベースから取得される場合、それは単純な文字列になります。 imagepathを解析するための部分的なコードリストは次のとおりです-
- 本*モデルの完全なリストは次のとおりです-
BookTable.phpを更新する
部分的なコードのリストは次のとおりです-
- addAction()*メソッドの完全なリストは次のとおりです-
add.phtmlのビューを更新
最後に、「add.phtml」を変更し、以下に示すようにimagepathファイルの入力要素を含めます-
完全なリストは次のとおりです-
アプリケーションを実行する
最後に、 http://localhost:8080/tutorial/add でアプリケーションを実行し、新しいレコードを追加します。
結果は、次のスクリーンショットに示すようになります-
フォームページ
インデックスページ