![](/img/trans.png)
[英]Azure DevOps Server Widget don't load if configuration is added
[英]Export Images with an Azure DevOps Widget
我正在为Azure DevOps构建小部件,以创建自定义仪表板和导出功能。 到现在,一切正常,直到我将包含图像的多行文本字段导出到Word文档。 图片中包含蔚蓝的网址,由于您未通过身份验证,因此不会以文字形式显示。
该字段仅包含简单的html数据:
<div>
<img src="https://dev.azure.com/xxx/xxx-xxx-xxxx-xxx-xxxxxxxxxxx/_apis/wit/attachments/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx?fileName=image.png">
</div>
我试图使用HTML5 <canvas>
和toDataURL()
将图像转换为base64,但这返回了我一个跨域错误。
除了此选项外,我还尝试执行http请求以将图像作为数据获取,但这会返回未经身份验证的消息。
我可以看到图像,但对此却无能为力,这真是太不可思议了。 有人有解决方案来获取图像并将其转换为base64吗? 或者,也许有一些API下载图像? 小部件的代码用Javascript编写。
我在Azure DevOps REST客户端文档中找到了一个解决方案。
您可以通过从图片网址获取attachmentId
来解决此问题。 请记住,URL结构在API 4.1和5.0版本中会有所不同!
取得ID后,您可以将图像作为ArrayBuffer
,并将其转换为base64图像。
var client = VSS_Service.getCollectionClient(TFS_Wit_WebApi.WorkItemTrackingHttpClient);
client.getAttachmentContent(attachmentId).then(function(imageData) {
var base64 = btoa(new Uint8Array(imageData).reduce((data, byte) => data + String.fromCharCode(byte), ''));
var iamge = "data:image/jpg;base64," + base64";
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.