我尝试在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为空。
有什么不妥,我该如何解决?
提前感谢。
答案 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')
来在上传脚本中规定此名称。
如果这不是问题,您需要在此处添加上传代码,以便了解正在发生的事情。