tfs 2017 使用 REST 添加 png 到工作项附件 API
tfs 2017 Adding a png to a workitem attachment using the REST API
我正在尝试为 TFS 2017 中的工作项创建附件。我在 tfs REST API 中找到了 "createAttachment" 方法。
我能够使这种方法适用于文本文件。但我需要做的是创建一个图像附件。我可以访问文件的 byteArray 内容和文件的 base64 内容。但是当我尝试传递 byteArray 时,出现以下错误:“不允许使用 405 方法”。
如果我传递图像的 base64 内容,则会创建附件但图像无效。
这是我使用的代码:
images_upload_handler: function (blobInfo, success, failure)
{
var client = _RestClient.getClient();
var byteString = atob(blobInfo.base64());
client.createAttachment(byteString).then(function (item)
{
console.log(item.url);
});
}
我需要找到一种方法来从 javascript 自定义控件扩展中为 tfs 工作项创建 png 附件。
谢谢
一般需要上传没有base64编码的二进制格式的图片.
如消息所述“405 Method Not Allowed
”,您无法创建 png 图像。
但是您可以尝试将 png 附件上传到附件存储,然后将其附加到工作项。
- Upload an attachment 和示例代码:C#
(UploadBinaryFile 方法)。 (请注意,您需要上传
未经 base64 编码的二进制形式的图像。)
- Add an attachment 和示例代码:C# (AddAttachment
方法)
这篇文章也可能有所帮助:Insert an inline image into a Work Item with the TFS API
更新:
我们无法创建 png 文件,我们只能上传现有的 png 文件并将其附加到工作项中。
我能够通过将 Post 请求的 processData 参数设置为 false 使其工作。请参阅下面的代码:
var byteString = atob(blobInfo.base64());
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++)
{
ia[i] = byteString.charCodeAt(i);
}
$.ajax(
{
type: "POST",
contentType: "application/octet-stream",
url: SERVER_URI + "_apis/wit/attachments?filename=" + blobInfo.filename() + "&api-version=1.0",
data: ia,
processData: false,
headers:
{
'Authorization': 'Basic ' + btoa(":" + TOKEN)
}
}).always(function (data)
{
console.log(data.url);
});
我正在尝试为 TFS 2017 中的工作项创建附件。我在 tfs REST API 中找到了 "createAttachment" 方法。
我能够使这种方法适用于文本文件。但我需要做的是创建一个图像附件。我可以访问文件的 byteArray 内容和文件的 base64 内容。但是当我尝试传递 byteArray 时,出现以下错误:“不允许使用 405 方法”。 如果我传递图像的 base64 内容,则会创建附件但图像无效。
这是我使用的代码:
images_upload_handler: function (blobInfo, success, failure)
{
var client = _RestClient.getClient();
var byteString = atob(blobInfo.base64());
client.createAttachment(byteString).then(function (item)
{
console.log(item.url);
});
}
我需要找到一种方法来从 javascript 自定义控件扩展中为 tfs 工作项创建 png 附件。
谢谢
一般需要上传没有base64编码的二进制格式的图片.
如消息所述“405 Method Not Allowed
”,您无法创建 png 图像。
但是您可以尝试将 png 附件上传到附件存储,然后将其附加到工作项。
- Upload an attachment 和示例代码:C# (UploadBinaryFile 方法)。 (请注意,您需要上传 未经 base64 编码的二进制形式的图像。)
- Add an attachment 和示例代码:C# (AddAttachment 方法)
这篇文章也可能有所帮助:Insert an inline image into a Work Item with the TFS API
更新:
我们无法创建 png 文件,我们只能上传现有的 png 文件并将其附加到工作项中。
我能够通过将 Post 请求的 processData 参数设置为 false 使其工作。请参阅下面的代码:
var byteString = atob(blobInfo.base64());
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++)
{
ia[i] = byteString.charCodeAt(i);
}
$.ajax(
{
type: "POST",
contentType: "application/octet-stream",
url: SERVER_URI + "_apis/wit/attachments?filename=" + blobInfo.filename() + "&api-version=1.0",
data: ia,
processData: false,
headers:
{
'Authorization': 'Basic ' + btoa(":" + TOKEN)
}
}).always(function (data)
{
console.log(data.url);
});