如何使用curl将文件上传到Atlassian Confluence页面

时间:2014-03-21 06:23:56

标签: python curl confluence confluence-rest-api

我正在尝试按照远程API文档中提供的指南将.xls文件上传到Confluence维基页面: https://developer.atlassian.com/confdev/confluence-server-rest-api/confluence-rest-api-examples#ConfluenceRESTAPIExamples-Uploadanattachment

curl -v -S -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" -F "comment=this is my file" "http://localhost:8080/confluence/rest/api/content/3604482/child/attachment" | python -mjson.tool

这就是我在做的事情:

curl -v -S -u username:password -X POST -H "X-Atlassian-Token: nocheck" -F "file=@/path/to/local/excelsheet.xls" https://<Confluence server>/display/page

我省略了Python -mjson.tool,因为它说“没有JSON对象可以被解码”,因为我没有发布JSON,所以没有意义。

但是上面的curl命令对我不起作用。我在控制台上看到目标页面的html,文件没有上传。我试过用几种方法修改curl命令,但没有任何效果。

另外,对于我尝试上传到的网页的网址,它没有文档中建议的任何contentID。目标URL是接受附件并显示上载文件列表的页面。

请有人指出我哪里出错了?我对Curl没有多少经验。

4 个答案:

答案 0 :(得分:3)

您需要在网址中使用REST API:.../confluence/rest/api/content/$PAGE_ID/child/attachment,现在您正在使用视图页面的网址。

答案 1 :(得分:3)

除了标题“ X-Atlassian-Token ”值之外,

David Vonka回答是正确的。它必须是“不检查”(而不是“ nocheck ”)

如此纠正的命令是:

curl -v -S -X POST -H "X-Atlassian-Token: no-check" -F "file_0=@<file name>" -F "comment_0=<upload comment>" "http://<server>:<port>/<context>/pages/doattachfile.action?pageId=<page id>&os_username=<username>&os_password=<password>"

注意替换所有&lt; ...&gt;具有您的值的占位符

答案 2 :(得分:1)

我不认为confluence rest api允许文件上传。请改为执行此操作

curl -v -S -X POST -H "X-Atlassian-Token: nocheck" -F "file_0=@<file name>" -F "comment_0=<upload comment>" "http://<server>:<port>/<context>/pages/doattachfile.action?pageId=<page id>&os_username=<username>&os_password=<password>"

替换所有&lt; ...&gt;具有您的值的占位符

答案 3 :(得分:0)

API POST语法应从“ https://ConfluenceServer/display/page”更正为正确的res / api / content语法,例如:“ https://companyName.atlassian.net/display/rest/api/content/pageIDxxxxx”:

 curl -v -S  -X POST -H "X-Atlassian-Token: no-check" -F "file_0=@<file name>" -F "comment_0=<upload comment>" https://<companyName>.atlassian.net/display/rest/api/content/<pageID15398762>/child/attachment

可以在URL显示页面中找到pageID。例如: https://companyName.atlassian.net/display/spaces/DEV/pages/pageID15398762/Page+Title+Name

有关API语法的更多详细信息,请参阅此文档:
https://docs.atlassian.com/atlassian-confluence/REST/6.6.0/#content-createContent