【问题标题】:CakePHP Upload Plugin: Programmatic File Retrieval without a FormCakePHP 上传插件:无需表单的程序化文件检索
【发布时间】:2015-01-17 12:07:40
【问题描述】:

我使用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';

谢谢。

【问题讨论】:

  • 您是说需要重新上传所有图片。为什么?上传插件将上传内容存储在表格中。如果你能找出它是什么路径,什么名字,你可以构建一些代码来生成数据库行,并复制文件手册?
  • 不,我需要生成与服务器上已有的原始图像不同大小的新缩略图。我已将文件名保存在数据库中,原始图像位于一个文件夹中。计划是对所有记录进行循环,查找相关图像并生成新图像,这些图像将按记录的 id 数放置在文件夹中。
  • 啊好吧...我会检查它的文档,但不能保证我有答案;)
  • 文件C:\xampp\htdocs\portal\webroot\img\attachment\59\hpim4799.jpg真的存在吗?如果上传不起作用,它不应该存在吗?
  • 是的,有一个文件。是的,有一个文件。行为仅适用于远程文件。

标签: cakephp file-upload cakephp-2.5


【解决方案1】:

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

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

【讨论】:

  • 在我提出这个问题之前,我已经试过了。在我看来,该插件有一个错误。
  • 我怀疑...你确定变量$image_url是对的吗?
  • 你能调试$image_url、你的程序代码和行为的加载($actsas)吗?
【解决方案2】:

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

因为 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();
?>

【讨论】:

  • 你能告诉我这段代码实际上是做什么的吗?我在文档中没有找到任何解释。我可以将任何有效的图像 URL 作为 $image_path 传递吗?例如谷歌图片.jpg-link?或者图像数据是否位于本地同一台服务器上?
  • 简单上传任何远程文件。
猜你喜欢
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多