CakePHP上传插件:没有表格的程序化文件检索

时间:2015-01-17 12:07:40

标签: cakephp file-upload cakephp-2.5

我使用CakePHP-Upload plugin,现在需要使用不带表单的上传,请按照以下示例操作:Programmatic File Retrieval without a Form

我的所有上传内容都存储在相关模型中,称为附件。 因此,当我保存文章时,同时将图像保存在Attachmen模型中。

插件文档建议如下:

<?php
  $this->Article->set(array('file' => $image_path)); // ?????
  $this->Article->save();
?>

我在服务器上有更多的图像集,以前通过Joomla CMS上传,现在我将数据迁移到基于CakePHP框架的自定义CMS。 我需要拍摄所有这些照片并再次上传,通过此插件。

如何正确使用此插件满足我的需求,我尝试将路径放到本地图片上,但上传不起作用???

修改

$image_path = WWW_ROOT . 'img' . DS . 'attachment' . DS . '59'.DS.'hpim4799.jpg';
debug($image_path);
'C:\xampp\htdocs\portal\webroot\img\attachment\59\hpim4799.jpg'

不保存记录而不创建新图像。 请注意,通过HTML表单上传效果很好,我使用的是Windows 7和xampp服务器。

编辑2 /解决方案

图片路径必须是有效的网址,例如“http://localhost/portal/img/attachment/59/hpim4799.jpg

 $image_path = Router::url('/', true) . 'img/attachment/59/hpim4799.jpg';

谢谢。

2 个答案:

答案 0 :(得分:1)

您能告诉我变量$image_url的内容是什么吗? doucmentation说您可以通过表单添加文件,或者您可以通过编程方式执行。如果您这样做,请使用$image_url作为图像的路径。如果你有一个像Attachment这样的关联模型,你应该使用:

<?php
  $this->Article->set(array('Attachment.file' => $image_path)); // path + file to file
  $this->Article->save();
?>

答案 1 :(得分:0)

经过几个小时的搜索解决方案和行为代码的详细检查,我终于找到了它。

由于Behavior使用php FILTER_VALIDATE_URL 过滤器,因此路径必须是有效的URL。这是一个例子:

<?php
  $image_path = Router::url('/', true) . 'img/attachment/59/hpim4799.jpg';
  // return http://localhost/portal/img/attachment/59/hpim4799.jpg

  $this->Article->Attachment->set(array('file' => $image_path)); 
  $this->Article->Attachment->save();
?>