CKEditor图片上传无法使用javascript

时间:2015-07-14 10:47:02

标签: javascript java image file-upload ckeditor

我正在使用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 ...我希望图像显示在预览部分。是否有启用的回调配置或插件?

由于 请帮忙

1 个答案:

答案 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);