Codeigniter + Redactor(wysiwyg js编辑器)。图片上传

时间:2013-10-02 17:30:45

标签: codeigniter upload redactor

我尝试在Codeigniter网站中整合wysiwyg编辑器Redactor。

RedactorOptions:

{
    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为空。

有什么不妥,我该如何解决?

提前感谢。

2 个答案:

答案 0 :(得分: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(); ?>'
 }

我很确定这是你的问题。这是我的(再次重击自己)。

答案 1 :(得分:0)

CI的文件上传类将默认从名为“userfile”的输入字段中查找POST数据。 redactor的文件输入字段名为“file”。因此,您需要通过将$this->upload->do_upload()更改为$this->upload->do_upload('file')来在上传脚本中规定此名称。

如果这不是问题,您需要在此处添加上传代码,以便了解正在发生的事情。