我正在使用java和javascript,使用ckeditor4.2在上传图片时面临一个问题。
我已经通过@Don Jones
了解了stackoverflow本身的帮助首先在实例化CKEditor时注册自定义浏览器/上传器。您可以为图像指定不同的URL 浏览器与一般文件浏览器。
<script type="text/javascript"> CKEDITOR.replace('content', { filebrowserBrowseUrl : '/browser/browse/type/all', filebrowserUploadUrl : '/browser/upload/type/all', filebrowserImageBrowseUrl : '/browser/browse/type/image', filebrowserImageUploadUrl : '/browser/upload/type/image', filebrowserWindowWidth : 800, filebrowserWindowHeight : 500 }); </script>
您的自定义代码将收到一个名为CKEditorFuncNum的GET参数。保存它 - 这是你的回调函数。让我们说吧 你把它放入$ callback。
当有人选择文件时,运行此JavaScript以通知CKEditor选择了哪个文件:
window.opener.CKEDITOR.tools.callFunction(<?php echo $callback; ?>,url)
其中“url”是他们选择的文件的URL。可选的第三个参数可以是您希望在标准警报中显示的文本 对话框,如“非法文件”或其他东西。将网址设置为空 如果第三个参数是错误消息,则为字符串。
CKEditor的“上传”标签将在“上传”字段中提交一个文件 - 在PHP中,转到$ _FILES ['upload']。 CKEditor想要你的 要输出的服务器是一个完整的JavaScript块:
$output = '<html><body><script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$callback.', "'.$url.'","'.$msg.'");</script></body></html>'; echo $output;
同样,您需要为其提供回调参数,文件的URL以及可选的消息。如果消息是空字符串, 什么都不会显示;如果消息是错误,那么url应该是 一个空字符串。
现在问题是
我按照下面的说明操作,服务器正在输出一个完全如上所述的JavaScript块...问题是CKEDITOR没有对它做任何事情,文本只是显示在UPLOAD选项卡中,而不是切换标签并获取URL ...我希望图像显示在预览部分。是否有启用的回调配置或插件?
由于 请帮忙
答案 0 :(得分:0)
@Ilia Shakitko嘿,我来到这里的解决方案是。
使用CommonsMultipartFile获取上传的文件。然后转换 将此文件转换为字节将其写入BufferedOutputStream对象。然后 将其上传到您的服务器(S3 /您自己的服务器),然后写下面的代码
网址将是下载的网址
String url;
String script = "<script type='text/javascript'>"
+ " window.parent.CKEDITOR.tools.callFunction(1, '" + url + "', '');" + "</script>";
PrintWriter out = null;
try {
out = res.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.println(script);