我试图在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 为空。
什么错误,我该如何解决?
提前谢谢。
我整晚都在摸索着试图解决同样的问题,结果证明这是一个简单的网站(所以给你自己一个耳光,就像我给自己一个!
您在配置中将 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(); ?>'
}
我很确定这是你的问题。这是我的(再次在头上捶打自己)。
CI 的文件上传类将从名为"userfile"的输入字段中查找 POST 数据。编校器的文件输入字段名为"file"。因此,您需要通过将$this->upload->do_upload()
更改为$this->upload->do_upload('file')
来在上传脚本中指定此名称。
如果这不是问题所在,则需要在此处包含上传代码,以便我可以看到发生了什么。