我正在使用CKEDITOR,并希望能够允许用户在文本编辑器中上传和嵌入图像...
以下JS是加载CKEDITOR的:
CKEDITOR.replace( 'meeting_notes',
{
startupFocus : true,
toolbar :
[
['ajaxsave'],
['Bold', 'Italic', 'Underline', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
['Cut','Copy','Paste','PasteText'],
['Undo','Redo','-','RemoveFormat'],
['TextColor','BGColor'],
['Maximize', 'Image']
],
filebrowserUploadUrl : '/notes/add/ajax/upload-inline-image/index.cfm'
}
);
我遇到的问题是filebrowserUploadUrl ...那个URL应该返回CKEDITOR以使这个过程起作用?
谢谢
11 回答
该URL应指向您可能拥有的自定义文件浏览器URL .
我已经在我的一个项目中完成了这个,我在我的博客上发布了关于这个主题的教程
http://www.mixedwaves.com/2010/02/integrating-fckeditor-filemanager-in-ckeditor/
本教程提供了有关如何在CKEditor中集成FCKEditor的内置FileBrowser的分步说明,如果您不想自己创建 . 它非常简单 .
可能为时已晚 . 您的代码是正确的,所以请再次检查filebrowserUploadUrl中的URL
和Upload.php文件
新的CKeditor没有包含文件管理器(CKFinder是应付的) . 您可以在CKeditor中集成好看且易于实现的免费文件管理器 .
http://labs.corefive.com/2009/10/30/an-open-file-manager-for-ckeditor-3-0/
您下载它,将其复制到您的项目 . 所有说明都在那里,但您基本上只是将路径添加到代码中添加的filemanager index.html页面 .
支持大多数语言(php,asp,MVC && aspx - ashx,...)) .
如果您不想购买CKFinder,就像我不想购买CKFinder,那么我为CKEditor 4写了一个非常可靠的上传器 . 它由第二种形式组成,位于textarea表格的正上方,并利用了iframe hack,尽管它的名字,它是无缝的,不引人注目的 .
成功上传图像后,它将显示在您的CKEditor窗口中,以及已存在的任何内容 .
editor.php (表格页面):
这是操作页面, editaction.php ,它执行实际的文件上传:
我的最新一期是如何在CKEditor中集成CKFinder进行图像上传 . 这里的解决方案 .
下载CKEditor并在您的Web文件夹根目录中解压缩 .
下载CKFinder并使用ckeditor文件夹解压缩 .
然后添加对CKEditor,CKFinder和put的引用
到你的aspx页面 .
(source)
对于那些在Grails ckeditor插件中有相同问题的人
filebrowserUploadUrl: '/ YourAppName / CK / OFM'
调用处理图像uploade的函数 . 如果你想使用自己的自定义函数,你可以给出该文件路径 .
使用CKeditor版本4,编辑器期望从服务器端返回JSON . 旧版本可能需要带有javascript代码段的text / html类型的响应 . 有关Explanation of return formats的说明,请参阅此链接 . 在服务器端,如果您使用的是C#,则可以创建如下数据模型:
并使用以下命令返回上传例程的结果:
尽管.net很可能会自动生成json,但请确保返回内容类型的application / json .
作为那些想要检查上传的文件是否真的是图像文件的人的旁注;如果您使用的是Asp.net核心,则需要以非标准方式安装system.drawing库 . Here's how to do that
另请注意,您可以将config.js文件中的发布类型更改为 config.filebrowserUploadMethod='form'; ,而不是 config.filebrowserUploadMethod='xhr';
该URL将指向您自己的服务器端文件上载操作 . 文档没有详细说明,但幸运的是 Don Jones 填写了一些空白:
How can you integrate a custom file browser/uploader with CKEditor?
也可以看看:
http://zerokspot.com/weblog/2009/09/09/custom-filebrowser-callbacks-ckeditor/
我最近也需要一个答案,我花了几个小时来弄明白,所以我决定用一些更新的信息和一个完整的答案来复活这个问题 .
最终我偶然发现了this tutorial,这对我解释得非常好 . 对于stackoverflow,我将在这里重申教程以防它被删除 . 我还将在教程中添加一些更改,使其成为更灵活的解决方案 .
入门
让我们从ckeditor的任何版本开始,(基本的,标准的,完整的,自定义的)唯一的要求是你有addon image和filebrowser
(在撰写本文时,所有包都包含这两个插件,除了基本插件,但它可以添加到基本插件中)
上传必要的ckeditor文件后,请确保您的安装正常 .
使确定你链接你的ckeditor.js文件脚本
<script src="ckeditor/ckeditor.js"></script>
,然后像这样初始化它:CKEditor配置
现在我们必须告诉CKEditor我们要启用上传 . 您可以通过进入ckeditor文件夹并编辑`config.js'来完成此操作 . 我们需要添加这一行:
config.filebrowserUploadUrl = '/uploader/upload.php';
在主要功能E.G内的某处在此之后,CKEditor配置完成!那很简单呃?
事实上,如果你现在再次测试你的图像上传,你会得到一个上传选项,虽然它还没有完成 .
服务器配置
现在你会注意到在此之前的步骤中它以
upload.php
文件结束 . 这是困扰我的部分,我想有一些默认可以用这个,但据我所知,没有 . 幸运的是,我找到了一个可行的,我对它进行了一些更改以允许更多的自定义 .因此,让我们转到您在上一步中提供的路径,为了本教程的连续性,我将使用
/uploader/upload.php
.在这个位置,创建一个名为(你猜对了)
upload.php
的文件 .该文件将处理我们的文件上传 .
我将放入我的自定义上传类,但它基于我发现并分叉的this github .
默认情况下,此类设置为保留所有文件,而不会覆盖 . 您可以使用这些设置来更好地满足您的需求 .
如果您注意到,有一段代码只是
if(true)
语句,显然总是如此这是为了安全 . 您应该在此处检查用户上载是否已登录/允许上载 . 如果你不担心,你可以删除这些代码行或将其设置为
if(false)
(NOT RECOMMENDED)您还需要编辑
$basePath
和$baseUrl
变量以满足您的服务器需求,否则它将无法工作 . 除非你想玩,否则下面的所有内容都可以单独留下 .我希望这个小教程可以帮助某些人,因为我在为自己努力工作的过程中工作了太长时间,我希望我可以节省一些时间 .
我上面链接的教程还有一些简洁的故障排除步骤,可以帮助您找到出现问题的原因 .
您可以使用此代码
要从您的桌面或任何地方上传图像简单拖放,您可以通过复制图像并使用ctrl v将其粘贴到文本区域来实现此目的