0

我试图在 Codeigniter 网站中集成所见即所得的编辑器 Redactor。

编辑器选项:

{
    lang: lang(),
    toolbarFixed: true,
    buttons: ['html', '|', 'bold', 'italic', 'deleted', '|', 'image', 'video', '|', 'unorderedlist', 'orderedlist', '|', 'alignment', '|', 'horizontalrule', '|', 'table', '|', 'mtLink'],
    imageUpload: '/upload_photo'
}

当我开始通过上传图像对话框发送照片时,我在开发者控制台中看到:

Uncaught TypeError: Cannot read property '0' of null redactor.js:1
Redactor.(anonymous function).$.(anonymous function).(anonymous function).uploadLoaded redactor.js:1
p.isFunction.f jquery.js:2
p.event.dispatch jquery.js:2
g.handle.h

脚本“upload_photo”正在运行,但 $_FILES 为空。

出了什么问题,我该如何解决?

预先感谢。

4

2 回答 2

0

我整晚都在摸索试图解决同样的问题,结果证明这是一个简单的过度网站(所以给你自己一记耳光,就像我给自己一记耳光一样!)

您在配置中将 CI 跨站点请求伪造 (CSRF) 保护设置为 TRUE。当您提交表单而没有刷新旧页面时,Redactor 会收到令人讨厌的错误页面(我真的很想找到解决方法)!

CSRF 令牌必须以 POST 提交的任何形式传递。这在使用 CI 时会自动完成form_open(),但 Redactor 使用它自己的表单来发布帖子。所以你需要像这样包含 CSRF 信息。

uploadFields: {
 <?php echo $this->security->get_csrf_token_name(); ?>: '<?php echo $this->security->get_csrf_hash(); ?>'
 }

我很确定这是你的问题。那是我的(又一次在脑海中捶胸顿足)。

于 2013-10-03T07:36:10.837 回答
0

CI 的文件上传类默认会从名为“userfile”的输入字段中查找 POST 数据。编辑器的文件输入字段名为“文件”。因此,您需要在上传脚本中指定此名称,方法是更改$this->upload->do_upload()​​为$this->upload->do_upload('file').

如果这不是问题,您需要在此处包含您的上传代码,以便我查看发生了什么。

于 2013-10-04T16:06:22.513 回答