【问题标题】:POSTed image via TinyMCE don't appear in MySQL as BASE64 code doesn't send via POST通过 TinyMCE 发布的图像不会出现在 MySQL 中,因为 BASE64 代码不会通过 POST 发送
【发布时间】:2013-04-26 11:10:52
【问题描述】:

我使用 Codeigniter+TinyMCE。当我从数据库中的 textarea 发布文本和图像时,仅显示文本。为了解决这个问题,我增加了 POST 限制大小,max_allowed_pa​​cket。但这没有帮助。然后我输出转储: $_POST['body'] 只得到:

<p><img alt="" /></p>, 

但在 TinyMCE 源代码中我看到:

  <p><img src="data:image/png;base64,iVBORw0....etc.

echo $this->input->post('body', TRUE);

显示:

     <p><img alt="" /></p> <div id="mcePasteBin" absolute; top: 0px; left: 0;    background:    red; width: 1px; height: 1px; overflow: hidden" c>  <div c><img alt="" /></div> </div>

附言。我从缓冲区插入图像 CTRL+C/CTRL+V 我也安装了 CKEditor 问题。 还尝试更改表单 enctype 类型。 (

在没有 Codeigniter 的情况下,它也可以在简单的 php 中完美运行。

【问题讨论】:

  • $config['permitted_uri_chars'] = '+=\a-z 0-9~%.:_-';
  • 可能是 XSS 过滤器删除了 src 属性,因为它们不是典型的 URL。
  • 您正在使用以这种方式插入图像的 Firefox。在CKEditor你可以使用这个插件将图片上传到服务器并得到一个正常的URL:ckeditor.com/forums/Plugins/ImagePaste-plugin-for-Firefox
  • 似乎是 config.php 中的一些配置导致了这个问题。我尝试在新安装的 CI 和 POST 作品上执行此操作。从我的项目中复制 config.php 并出现问题后。关于 XSS,我尝试在 POST 中使用 TRUE\FALSE,但没有成功。但我会尝试在 config.php 中禁用它....

标签: codeigniter post tinymce ckeditor base64


【解决方案1】:

根据我的经验,数据 URI 图像通常无法识别;我的假设是,这是由于它们的字符串不是以“http”开头,或者不是以已知的图像文件类型(.jpg;.png;.tiff;.bmp;等)结尾

我相信在您正在运行的程序中会有解决方案,但我认为您会对外部的解决方法感兴趣:

将 URI 缩短为正常外观的字符串,以必要的文件类型结尾。

如果 URI 足够短(大约 3000 以内),您可以使用 tinyurl,然后将结果传递给 doiop.com,因为它们会让您使用您想要的别名(包括任何 )为只要它从他们的域开始。在将数据库 64 编码文件发布到 Blogspot 时,这对我有用,在那些被拒绝的情况下。

如何实现自动化是另一回事;我会感兴趣的。

或者,您可以在您的机器上本地执行此操作,或者通过创建 HTML 页面并使用元刷新;如果我不太忙,我会试试这个并发布结果。

希望有帮助。

【讨论】:

  • 所以在 config.php 中禁用 XSS 过滤解决了我的问题。谢谢大家
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多