java - 如何使用其 Java API 更新(而不是添加额外的)Atlassian Confluence 中的附件?

标签 java confluence

我们有一个自定义插件,允许人们通过 GUI 上传文档,并在我们的插件中添加有关这些文档的元数据。此外,该插件的另一个功能是通过 Confluence SOAP 服务将 XML 文件推送给我们。 SOAP 服务每天一次将该 XML 文件附加到插件空间内的特定文件。

我们现在被要求扭转这一过程。现在,我们将进行自己的 SOAP 调用来获取相同的 XML 文件并将其附加到同一页面。

我可以成功地将新文件附加到页面,但是当我尝试用较新的版本更新(替换)该 XML 文件时,我最终上传了另一个文件,因此我留下了该文件的多个副本,其中包含相同的名称,这不是我们想要的。

这是我添加新附件但不更新(替换)附件的内容:

page = pageManager.getPage(spaceKey, pageTitle);

attachment = attachmentManager.getAttachment(page, attachmentFilename);
Attachment currentAttachment = null;

currentAttachment = (Attachment) attachment.clone();

attachment = new Attachment();
attachment.setFileName(attachmentFilename);
attachment.setContent(page);

attachment.setFileSize(fileSize);
attachment.setContentType(newAttachmentContentType);
attachment.setCreator(page.getCreator());
attachment.setCreationDate(date);
attachment.setComment(attachmentComment);

attachmentManager.saveAttachment(attachment, currentAttachment, dplAsStream);

同样,我想要的是用更新的 filename.xml 替换 filename.xml,但我得到的是 filename.xml、filename.xml、filename.xml 等。

最佳答案

据我所知,没有简单的updateAttachment,因为文件存储遵循基于版本的方法。每次上传同一文件(按文件名)都将是已存在文件的较新版本,而不会删除旧文件。

要实现更新功能,可能需要执行多个步骤:

  1. 检查要上传的文件是否已存在(=更新)
  2. Remove a given versionall previous versions使用附件管理器
  3. 上传文件

也许是 CLI implementation提供了他们如何制作的更多详细信息,因为在这里您可以运行更新命令。

关于java - 如何使用其 Java API 更新(而不是添加额外的)Atlassian Confluence 中的附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194510/

相关文章:

java - 在 OpenCV for Java 中执行 HSV 阈值

java - 正则表达式异常

java - Apache POI Word XWPF 表方向和对齐方式

用于在 Android 上安装 APK 的 Java 应用程序

java - maven-deploy-plugin 不知道我在其中将其声明为构建插件的 pom 吗?

ssl - OpenSSL 在 LetsEncrypt-Certificate 上使用 -CAFile

java - 如何将 HTML 代码转换为 Confluence 风格的 Wiki 标记?

python - urllib.urlretrieve 下载空的 zip 文件

maven-3 - 如何通过 Maven 3 站点插件使用 Confluence 标记语言?

groovy - 文件上传与 Groovy 融合?