我正在项目中使用cakephp媒体插件使用单片样式附件表,即所有附件都放在一个表中,其中包含foreign_key,model,group等,并保存文件详细信息。所以我的模型看起来像:
class ProjectProfile extends AppModel {
var $name = 'ProjectProfile';
var $useDbConfig = 'default';
var $useTable = 'project_profiles';
var $actsAs = array('Media.Transfer', 'Media.Generator');
public $belongsTo = array(
'Project' => array(
'className' => 'Project',
'foreignKey' => 'pjID'
)
);
var $hasMany = array(
'Photo' => array(
'className' => 'Media.Attachment',
'order' => 'Photo.basename, Photo.id',
'foreignKey' => 'foreign_key',
'conditions' => array('Photo.model' => 'ProjectProfile', 'Photo.group' => 'Photo'),
'dependent' => true)
);
然后保存我的记录时,控制器中的saveAll会保存附件。
这一切都运行正常,但是我真的希望能够一次上传多个文件,插件通过以下形式支持:
echo $this->Form->hidden('Photo.0.model', array('value' => 'Photo'));
echo $this->Form->input('Photo.0.file', array('type' => 'file');
echo $this->Form->hidden('Photo.1.model', array('value' => 'Photo'));
echo $this->Form->input('Photo.1.file', array('type' => 'file');
echo $this->Form->hidden('Photo.2.model', array('value' => 'Photo'));
echo $this->Form->input('Photo.2.file', array('type' => 'file');
但我认为您同意点击浏览每个单独的文件有点麻烦。我可以看到允许多个文件上传的简单方法是使用HTML5多文件部分选项 - http://bakery.cakephp.org/articles/veganista/2012/01/31/html_5_multiple_file_upload_with_cake:
echo $this->Form->input('files.', array('type' => 'file', 'multiple'));
这允许您在文件浏览器中移动单击以选择多个文件,然后将文件放入数组中以保存...但是,此字段格式不由媒体插件处理。此外,就我所见,无法在保存中添加模型,组等字段。
那么,有没有人知道如何使用整体模型使用媒体插件处理多文件上传?我对所有建议持开放态度。
提前致谢。