【问题标题】:Struts 2 - Intercept an image file uploading with CKEditorStruts 2 - 使用 CKEditor 拦截上传的图像文件
【发布时间】:2023-03-21 14:52:02
【问题描述】:

我在网站的不同页面上有一个CKEditor,所以我将上传到true 和所有配置内容都设置好了,图片上传对于"Send it to the Server" 选项卡来说工作得很好。但是从这里我想拦截或与upload函数交互,以便能够将图像上传到不是文件夹,而是上传到带有"page"等一些标志的数据库中,图像上传到哪里,"category""cropping"和其他一些与他们进行操纵。

那么如何拦截这些上传内容呢?

我很好奇,发现上传的默认动作是

/%project_name%/ckeditor/upload.html?CKEditor=textarea_1457018535&CKEditorFuncNum=2&langCode=en 

此上传的操作是CkeditorUpload.java,但我不知道如何进一步使用它们。

【问题讨论】:

  • 无法拦截,意味着你不需要为它编写拦截器。但必须编写实现。你尝试了什么?
  • 我所说的“拦截”并不是要编写一个拦截器,而是要拦截上传的动作,无论它是 AJAX 请求还是 Struts 动作或其他。
  • 你的意思是intercept是绕过动作执行还是什么?
  • 嗯,与其说是绕过,不如说是覆盖(覆盖)它

标签: java struts2 ckeditor image-uploading struts2-jquery


【解决方案1】:

好吧,如果你想覆盖它,你应该从上面的动作类开始覆盖方法执行。还可以通过替换操作配置中的类引用来覆盖配置。关键是原始实现创建FileOutputStream 的地方应该替换为ByteArrayOutputStream。然后让它写入字节数组流,getBytes() 将给你byte[] data。将该数据保存到数据库中。您也可以阅读this 答案将帮助您做到这一点,或者this 教程将向您解释如何使用 Hibernate 来做到这一点。然后操作写入 HTML 的代码将磁盘路径更改为操作路径 /uploads 映射到从数据库中检索图像的操作。您可以找到hereImageAction 示例。 This 回答也会有所帮助。

【讨论】:

  • 谢谢。我想知道的唯一一点是如何与CKEditor的图像上传进行交互,否则我将其保存到数据库没有任何问题,但无论如何感谢。我的配置中的 defaultStack 有 ,我现在如何从那里获取数据?还是我需要配置某种监听器?
  • upload 属性应填充此拦截器。
  • 我想我无法理解你的想法,我很难理解你想说什么,很抱歉。
  • 可能是this 解释得更好?怎么互动,你用过他们的showcase吗?图像属性包含一个选项卡上传,您可以通过按钮将其上传到服务器上,然后按确定并上传链接到文本的图像。我在那里上传了两张图片,链接有效,但没有显示。
  • CKEditor 使用他自己的操作来上传集成在库本身中的文件,我无权访问那里,如果我这样做的话,我从来没有要求过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 2023-03-31
  • 2011-12-14
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
相关资源
最近更新 更多