我们有一个自定义插件,允许人们通过GUI上传文档,并在插件中添加有关这些文档的元数据。另外,插件的另一个功能是,我们有一个XML文件通过Confluence SOAP服务推送给我们。这个XML文件由SOAP服务每天一次附加到插件空间中的特定文件。
我们现在已被指控改变这个过程。我们现在将进行自己的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等。
答案 0 :(得分:2)
据我所知,没有简单的updateAttachment
,因为文件存储遵循基于版本的方法。每次上传同一个文件(通过其文件名)都将是现有文件的较新版本,而不删除较旧版本。
要实现更新功能,可能需要执行多个步骤:
也许CLI implementation提供了更多详细信息,因为在这里您可以运行更新命令。