CakePHP 上传文件的最佳实践

Posted

技术标签:

【中文标题】CakePHP 上传文件的最佳实践【英文标题】:Best practice to upload files in CakePHP 【发布时间】:2011-03-10 01:24:03 【问题描述】:

谁能建议我用 Cakephp 编写上传文件的代码的最佳方法?

我需要上传一个文件并将其名称保存在表中。 如果记录保存失败,则不应上传文件。 如果上传失败,则应回滚记录。 代码应该是可重用的 我需要在afterSave回调中上传文件

【问题讨论】:

仅供参考,当您在 PHP 中处理时,文件上传已经完成,文件位于临时目录中。您只需将此文件模式到最终位置并将相应的行插入数据库。 (并处理可能的故障。) 【参考方案1】:

查看Cookbook 中的File fields 部分。

【讨论】:

【参考方案2】:

编辑(2015):请参阅Awesome CakePHP 列表以获取当前文件插件(2.x 分支here)


编辑(2013):这个答案现在有点过时了,所以我只留下所有提到的上传插件的列表:

josegonzalez/upload milesj/Uploader szajbus/uploadpack webtechnick/CakePHP-FileUpload-Plugin (2.0-分支) bmcclure/CakePHP-Media-Plugin (2.0-分支) davidpersson/media(仅限 1.3.x) jrbasso/MeioUpload(已弃用)

原始答案(从 2010 年开始):

您可以考虑使用上次 CakeFest 中谈到的Media plugin。它相当全面,包含创建文件变体(即图像或视频的缩略图)、用于输出不同类型文件的帮助器以及帮助更快地创建多文件上传表单的元素等功能;我从the slides 收集到的信息,从一开始就非常关注安全性。我在生产中使用它并发现它运行良好,而且它似乎比我见过的其他选项更多active development(例如MeioUpload behavior、Uploader plugin、FileUpload plugin 和各种面包店/关于该主题的博文)。

【讨论】:

让我无耻的加Upload Pack到列表 Uploader 和 Upload Pack 是我经过半天的研究和实施尝试后发现的前 2 个受支持的 CakePHP 2.x 库。 Upload Plugin 2.0 by Jose Diaz-Gonzalez 现在似乎是个不错的选择。【参考方案3】:

我发现这个https://github.com/srs81/CakePHP-AjaxMultiUpload 插件对我的情况很有帮助。

【讨论】:

以上是关于CakePHP 上传文件的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

活动存储:表单重新显示时保留/缓存上传文件的最佳实践

在PHP中获取上传文件扩展名的最佳方法/实践是啥[重复]

django 在模型自定义保存中访问上传的文件,最佳实践?

atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

从后台服务更新进度的最佳实践 [Android]

在服务器上存储图像的最佳实践