я могу использовать CKEditor в zk (zk WYSIWYG Editor) для загрузки изображения? - PullRequest
1 голос
/ 03 августа 2011

, поскольку использовать компонент загрузки zk для загрузки изображения, затем вставить контекстный путь изображения в CKEditor слишком сложно,

и на http://ckeditor.com/demo, вы можете видеть, что CKEditor может загружать изображениеи flash и т. д.,

, но в zk CKEditor не имеет этой функции,

означает ли это, что CKEditor в zk не может загрузить файл?

1 Ответ

1 голос
/ 25 сентября 2011

Боюсь, это невозможно с zk.

Я написал обходной путь для этого. Вы должны добавить кнопку в свой графический интерфейс и добавить этот EventListener для кнопки:

private class onUpload implements EventListener
{
    @Override
    public void onEvent(Event event) throws Exception
    {
        Media media = ((UploadEvent) event).getMedia();

        if (media.getContentType().contains("image"))
        {
            reader.upload(media.getStreamData(), media.getName());

            String description = edDescription.getValue();
            description += "<img alt=\"\" src=\"/" + media.getName() + "\" />";
            edDescription.setValue(description);
        }
        else
        {
            new Messagebox().show(_T("You can only upload images!"), _T("Not an image!"), Messagebox.OK, Messagebox.ERROR);
        }
    }
}

Reader - это мой класс, который обрабатывает передачу файлов и используется для записи данных в docroot. В моем случае docroot из Glassfish 3.1 может быть найден с помощью следующего кода. Я написал метод getDocFolder () для ist, потому что он также добавляет подпапки для каждого пользователя, если они еще не существуют.

 File file = new File("../docroot/");

Это код метода загрузки считывателя:

InputStream inputStream = null;

    try
    {
        inputStream = new ByteArrayInputStream(imageStream);
        String filename = getDocFolder()+"/"+imageName;

        File file = new File(filename);
        OutputStream out=new FileOutputStream(file);
        byte buf[]=new byte[1024];
        int len;

        while((len = inputStream.read(buf)) > 0)
            out.write(buf,0,len);

        out.close();
        inputStream.close();
    } 
    catch (Exception ex)
    {
        Logger.getLogger(ImageReader.class.getName()).log(Level.SEVERE, "Error writing image", ex);
    } 
    finally
    {
        try
        {
            inputStream.close();
        } 
        catch (IOException ex) {}
    }

Надеюсь, это поможет

...