Zend Framework - 文件上传
-
简述
文件上传是表单编程中的主要概念之一。Zend 框架提供了通过 zend-form 和 zend-input和zend-inputfilter组件上传文件所需的所有项目。 -
FileInput 类
zend-inputfilter 组件提供 Zend\InputFilter\File输入类来处理 html 文件输入元素 – <输入类型 = 'file' />。文件输入与其他输入筛选器类似,但有少数例外。它们如下所示 −-
由于 PHP 将上载的文件详细信息保存在 $_FILES 全局数组中,因此 FileInput 仅通过 $_FILES 收集上载的文件信息。
-
需要在文件输入类处理数据之前完成验证。这是与其他输入过滤器相反的行为。
-
Zend\Validator\File\UploadFile 是要使用的默认验证程序。UploadFile验证文件输入详细信息。
要在表单中添加文件上传类型,我们需要使用输入类型File。部分代码如下 −文件上载中使用的另一个类是 Zend\Filter\File\RenameUpload。RenameUpload用于将上传的文件移动到所需的位置。使用文件筛选器的分部类如下所示 −在这里,RenameUpload参数如下 --
target − 上载文件的目标路径。
-
randomize − 添加一个随机字符串以防止上传文件的重复。
-
use_upload_extension − 将文件扩展名附加到目标上载的文件。
-
-
文件上传 – 工作示例
让我们修改 tutorial 模块并包含图片上传功能。修改数据库表
让我们通过执行以下 SQL 命令将imagepath列添加到书籍表中 −更新 BookForm.php
添加文件输入元素以在书籍表单中上传图片 - myapp/module/Tutorial/src/Model/BookForm.php。在 BookForm 类的__construct方法中包含以下代码。更新 Book.php
在书籍类中执行以下更改 – myapp/module/Tutorial/src/Model/Book.php。-
为图片添加新的属性imagepath。
-
更新getInputFilter方法,如下所示 −
-
为文件输入元素添加FileInput筛选器。
-
设置UploadFile验证以验证文件输入元素。
-
配置RenameUpload以将上载的文件移动到正确的目标。
-
部分代码清单如下 −-
更新RenameUpload方法以包含imagepath属性。图像路径可能来自窗体或数据库。如果图像路径来自表单,则格式将是具有以下规范的数组 −
-
如果 imagepath 来自数据库,它将是一个简单的字符串。用于解析图像路径的部分代码清单如下所示 −
Book 模型的完整列表如下 :更新 BookTable.php
我们更新了BookForm和Book 模型。现在,我们更新BookTable并修改了saveBook方法。这足以在数据数组中包含图像路径条目,$data。部分代码清单如下 −BookTable 类的完整代码列表如下 :更新 TutorialController.php 中的 addAction:文件上传信息将在 $_FILES 全局数组中可用,并且可以使用 Request 的 getFiles( ) 方法。 因此,合并发布的数据和文件上传信息,如下所示。The complete listing of the addAction() method is as follows −更新视图
最后,更改“add.phtml”并包含图像路径文件输入元素,如下所示 −完整列表如下 −运行应用程序
最后,以 http://localhost:8080/tutorial/add 运行应用程序并添加新记录。结果将如以下屏幕截图所示 -表单页面索引页 -