【问题标题】:Magento : CMS upload image fail silentlyMagento:CMS 上传图片静默失败
【发布时间】:2012-06-05 22:58:47
【问题描述】:

我想弄清楚为什么 Magento 的 CMS 模块中的 tinyMCE WYSIWYG 编辑器不会上传图片。我可以创建/删除文件夹,但任何文件都不会被上传,而且似乎没有关于为什么文件没有成功写入服务器的消息。

谁知道为什么?

** 更新**

我正在使用 Magento 1.6.2。我试图找出问题所在,并且 似乎 控制器永远不会被执行。我添加了一行来记录 uploadAction() 操作(在 Mage_Adminhtml_Cms_Wysiwyg_ImagesController 中)中的参数,并且没有记录任何内容。

这是从其他人那里继承的项目,并进行了一定程度的修改,但似乎没有任何迹象表明 Magento 的这一部分会被修改所触及。

** 编辑**

与此问题相关的项目已被删除,我无法再提供此问题的答案。如果有人可以确认一个有效的答案(因为这个问题在 Magento 中很常见),我很乐意将该答案标记为“已接受”。

否则,出于上述原因,我会将此问题标记为删除。

谢谢。

【问题讨论】:

  • 您使用的是哪个 Magento 版本?
  • 您的服务器是否偶然使用了Suhosin 和/或mod_security
  • 除此之外,您是否已经尝试将原型 js 库降级到 1.6.1? Iirc,有问题导致图片上传失败。
  • 关于 prototype.js,它是 1.7,我看到有 1.6.0.2 坐在那里(命名为 prototype_old.js),这让我认为以前的人需要 1.7... 出于某种原因。您是否恰好知道导致上传失败的确切原因?我会试着用谷歌搜索一下,看看会不会是这样。
  • 不,不完全是,对不起。从来没有真正深入研究过这个。 Iirc,它与原型 1.7 改变他们的 JSON 实现以符合 EcmaScript 5 有关,但我不会为此冒险。

标签: magento file-upload content-management-system tinymce


【解决方案1】:

除了此处提供的解决方案外,当您在管理面板中为您的 javascript 和媒体文件使用 CDN( 或其他域)时,可能会发生这种情况。如果您使用 CDN,请将其用于您的网站范围,并将您自己的域用于默认范围。它将使您的网站媒体和 javascript 文件从 CDN 加载,后端的媒体和 javascript 文件从您自己的域加载。这将解决您的问题。

【讨论】:

  • 如果您使用子域,您还可以启用跨域资源共享 (CORS) 以使您的 javascripts 与您的域一起工作。谷歌“启用CORS”,它与您使用的系统类型不同。
【解决方案2】:

在我的情况下,这是一个跨域问题,如果你问我,很难找到......

让我感到困惑的是,产品图片的上传器工作起来很吸引人,但 CMS 部分中的上传器却完全无声无息地失败了。我们从 Amazon S3 存储桶中提供皮肤文件夹,并且闪存上传器位于该文件夹下。

有趣的是,我们的 Magento (1.7.0.2) 版本使用两种不同的方法来计算 SWF 文件的路径,具体取决于您使用的是 CMS 还是产品更新。

CMS 文件 (app/design/adminhtml/default/default/template/cms/browser/content/uploader.phtml) 使用以下方法嵌入 Flash Uploader:

<?php echo $this->getSkinUrl('media/uploader.swf') ?>

当产品图片上传器正在使用时:

<?php echo $this->getUploaderUrl('media/uploader.swf') ?>

在我们的例子中,第一个解析为 AWS S3 url,显然在一个单独的域中,而第二个仍将引用本地域的 url。

所以,是的,快速而肮脏的解决方法是将 getSkinUrl 替换为 app/design/adminhtml/default/default/template/cms/browser/content/uploader.phtml 中的 getUploaderUrl。或者,您可以扩展核心以加载您将替换该方法的不同模板。

我希望这对某人有所帮助......我希望我在五天前第一次偶然发现这个问题时找到了这样的东西:-)

【讨论】:

  • 遇到了同样的问题。 +1 回答!
【解决方案3】:

Magento 上的 Flash 图片上传器存在一些已知问题。不幸的是,当它落下时,它无声无息地落下。以下是一些可以破坏它的情况:

  1. 如果您尝试使用开放式 ssl 证书通过安全连接使用它
  2. 如果你在服务器上使用 apache 身份验证
  3. 在带有原型 1.7 的某些 Magento 版本上

我认为后者是您最好的选择。也许你应该尝试从这里应用补丁:http://www.magentocommerce.com/boards/viewthread/4348/P45/#t327010

【讨论】:

  • 我现在只能赞成你的回答,因为我没有从我的客户那里听说过这个问题(从来没有得到他的“好解决”)。但我确信它与原型有关。最初的程序员确实使用 Magento 安装升级了一些东西,我敢打赌他负责破坏东西:) 感谢补丁的链接。
【解决方案4】:

您是否使用带有 https 的 Flash 上传器?如果是这样,您的安全地址是否在不同的域中(通常用于共享 ssl)? 我遇到了一些麻烦。我通过安装一个 Flash 上传器禁用插件解决了。

您可以使用此下载器密钥下载插件:

http://connect20.magentocommerce.com/community/Dull_Uploader

我希望它有所帮助。

【讨论】:

    猜你喜欢
    • 2014-10-25
    • 2016-04-11
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    相关资源
    最近更新 更多