我正在尝试进行应用范围的媒体上传,应该可以从每个控制器/型号访问。
我想到了表media
,它保存了所有上传文件的记录,我的架构如下所示:
id
controller //to keep the reference from which controller the file was uploaded
foreign_key //since files should be uploaded to specific records, I need this id
filename
extension
fullname
size
created
modified
我不确定这样做的最佳方法是什么。我已经考虑过组件,插件和行为,但仍然不确定。
我的应用程序有许多不同的控制器,具有不同的记录 例如,它管理项目,现在应该能够从项目编辑掩码中将PDF附加到特定项目 由于这是其他控制器所需的功能,我也想在应用程序范围内编写它。
我很确定我需要一个助手来从面具中调用上传功能
可能是这样的:echo $this->Media->uploadMask();
,它为我提供了一个现成的控制器上传掩码和我正在编辑的id。
但我不知道应该拨打上传的路线。像/media/upload
这样的东西会很好,但我不确定这是否适合MVC方法。
从我的特定控制器调用它会更好吗?或者是AJAX上传到普通控制器/模型更好?
答案 0 :(得分:4)
您所描述的是Behaviour,它基本上是可以应用于任何模型的方法的对象。对于控制器,还有Components。
对于CakePHP,已经有一些已建立的上传行为,您应该查看:Meio Upload这对于基本图像处理很有用,而且CakePHP Media Plugin更先进,最近更新。