Codeigniter + Redactor (wysiwyg js editor).图片上传



我试图在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')来在上传脚本中指定此名称。

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

最新更新