我目前正在尝试使用openproject api v3在我的网站上显示有关openproject工作包的数据(我正在将PHP与symfony一起使用。)
获取常规数据(主题,描述,优先级等)没有问题,但是我不确定如何向用户显示附件。
我尝试使用"/api/v3/work_packages/".$id."/attachments"
,但返回的json中没有图像:
"_type":"Collection",
"total":1,
"count":1,
"_embedded":{
"elements":[{
"_type":"Attachment",
"id":1888,"fileName":"128-128-logo.png",
"fileSize":9583,
"description":{"format":"plain","raw":null,"html":""},
"contentType":"image/png",
"digest":{"algorithm":"md5","hash":"/*-hash-here-*/"},
"createdAt":"2018-07-09T16:49:26Z",
"_links":{
"self":{"href":"/api/v3/attachments/1888","title":"128-128-logo.png"},
"author":{"href":"/api/v3/users/7","title":"User Name"},
"container":{"href":"/api/v3/work_packages/1697","title":"Subject -\u003E Test Query OpenProject"},
"downloadLocation":{"href":"/attachments/1888/128-128-logo.png"},
"delete":{"href":"/api/v3/attachments/1888","method":"delete"}
}
}]
},
"_links":{
"self":{"href":"/api/v3/work_packages/1697/attachments"}
}
我也尝试了直接链接附件,但是得到了
"_type":"Attachment",
"id":1888,
"fileName":"128-128-logo.png",
"fileSize":9583,
"description":{"format":"plain","raw":null,"html":""},
"contentType":"image/png",
"digest":{"algorithm":"md5","hash":"/*-hash-here-*/"},
"createdAt":"2018-07-09T16:49:26Z",
"_links":{
"self":{"href":"/api/v3/attachments/1888","title":"128-128-logo.png"},
"author":{"href":"/api/v3/users/7","title":"User Name"},
"container":{"href":"/api/v3/work_packages/1697","title":"Subject -\u003E Test Query OpenProject"},
"downloadLocation":{"href":"/attachments/1888/128-128-logo.png"},
"delete":{"href":"/api/v3/attachments/1888","method":"delete"}
}
下载位置不是API网址,并返回406-如果我尝试使用img标签(<img src="https://XXXXXX.openproject.com/attachments/1888/128-128-logo.png">
来访问它,则未授权
所以我想我的问题是:即使我的开放项目上没有帐户,我如何向用户显示附件?
答案 0 :(得分:1)
要在您的网站上显示附件,您必须:
授予对您的openproject实例的匿名访问权限
在系统设置(“管理”->“系统设置”->“身份验证”(选项卡)”中取消选中“需要身份验证”并保存。
将项目设为公开
检查项目设置中的“公共”(导航到项目后->“项目设置”->“信息”(Tab))并保存。
您的网站只能访问该公共项目的资源所附带的附件。
后果
每个人都可以访问您的OpenProject实例,至少可以访问公共项目的一部分。
替代1
如果这是一个私人网站,并且该网站的所有访问者还将在OpenProject实例上拥有一个帐户,并且可以放心,他们将在访问该网站时始终登录到OpenProject,则其浏览器将发送会话Cookie获取图像后会自动将其添加到OpenProject实例,这将导致它们被授权获得附件。
替代2
一旦OP 8.0发布,API客户端将能够下载附件。然后,带有API密钥的脚本可以下载感兴趣的附件并将其存储在您的网站可访问的位置。然后,网站访问者将直接从网站获取附件。