Cake 2.0.x 和 2.1 的 AjaxMultiUpload 插件
一个为 CakePHP 2.0.x 和 2.1 提供全面 AJAX 文件上传功能的插件。使用它,您可以向任何或所有模型添加多个文件上传行为,而无需修改数据库或架构。
CakePHP 的 AjaxMultiUpload 插件
一个为 CakePHP 2.0.x 和 2.1 提供全面 AJAX 文件上传功能的插件。使用它,您可以向任何或所有模型添加多个文件上传行为,而无需修改数据库或架构。
您可以点击上传文件按钮,或将文件拖放到按钮上。您可以一次上传多个文件,而无需点击任何按钮,并且在上传过程中会显示一个漂亮的进度通知。
使用方法
下载或检出
您可以下载 ZIP 文件:https://github.com/srs81/CakePHP-AjaxMultiUpload/zipball/master
或检出代码(将密码字段留空)
` git clone https://[email protected]/srs81/CakePHP-AjaxMultiUpload.git `
将其放在 Plugin/ 目录中
将此内容解压缩或移动到应用程序根目录下的“Plugin/AjaxMultiUpload”。
添加到 bootstrap.php 加载中
打开 Config/bootstrap.php 并添加此行
`php CakePlugin::load('AjaxMultiUpload'); `
这将允许插件加载它需要的所有文件。
创建文件目录
如果文件上传目录不存在,请确保创建正确的目录:<pre> cd cake-app-root mkdir webroot/files chmod -R 777 webroot/files</pre>
默认上传目录是 /webroot 下的“files” - 但这可以更改(参见下面的常见问题解答)。
您不必授予它 777 权限 - 只需确保 Web 服务器用户可以写入此目录即可。
添加到控制器
添加到 Controller/AppController.php 以在所有控制器中使用,或仅在您将使用它的特定控制器中使用,如下所示
`php var $helpers = array('AjaxMultiUpload.Upload'); `
添加到视图
假设您有一个具有“id”主键的“companies”表。
将此添加到您的 View/Companies/view.ctp
`php echo $this->Upload->view('Company', $company['Company']['id']); `
并将此添加到您的 View/Companies/edit.ctp
`php echo $this->Upload->edit('Company', $this->Form->fields['Company.id']); `
常见问题解答
老兄!不需要更改数据库/表架构?
是的。:) 只需将此插件放到正确的 Plugin/ 目录中,并将代码添加到控制器和视图即可。确保 webroot 下的“files”目录可写,否则上传将失败。
由于该插件使用基于模型名称和 ID 的目录结构来保存模型的相应文件,因此不需要进行任何表/数据库更改。
救命!我收到文件上传或文件大小错误信息!
默认上传文件大小限制设置为保守的 2 MB,以确保它可以在所有(包括共享)托管环境中运行。要更改此限制
- 打开 Plugin/AjaxMultipUpload/Config/bootstrap.php 并将“AMU.filesizeMB”设置更改为您想要的任何大小(以 MB 为单位)。
- 确保还更改 PHP 设置 (php.ini) 中的上传大小设置(upload_max_filesize 和 post_max_size),并重新启动 Web 服务器!
更改目录
您被限制在 webroot 下的“files”目录吗?不。
打开 Plugin/AjaxMultiUpload 目录下的 Config/bootstrap.php 并更改“AMU.directory”设置。
该目录将位于应用程序 webroot 目录下 - 这符合 CakePHP 约定。
更改目录路径
即将推出。
未来工作
- 此版本不支持删除文件。
致谢
这使用了来自以下网站的 Ajax Upload 脚本:http://valums.com/ajax-upload/ 以及来自以下网站的文件图标:http://www.splitbrain.org/projects/file_icons