我们有一个自定义插件,允许人们通过 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
,因为文件存储遵循基于版本的方法。每次上传同一文件(按文件名)都将是已存在文件的较新版本,而不会删除旧文件。
要实现更新功能,可能需要执行多个步骤:
- 检查要上传的文件是否已存在(=更新)
- Remove a given version或all previous versions使用附件管理器
- 上传文件
也许是 CLI implementation提供了他们如何制作的更多详细信息,因为在这里您可以运行更新命令。
关于java - 如何使用其 Java API 更新(而不是添加额外的)Atlassian Confluence 中的附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194510/