Javascript Can';t使用Azure DevOps Rest API上载图像(二进制)

Javascript Can';t使用Azure DevOps Rest API上载图像(二进制),javascript,jquery,rest,azure-devops,azure-devops-rest-api,Javascript,Jquery,Rest,Azure Devops,Azure Devops Rest Api,我正在使用Javascript(jQuery)发布到Azure DevOps rest API,以上载一个简单的图像。但是,我无法让它工作 除了了解我需要向这个端点发布一篇文章之外,没有太多详细的文档 POST https://dev.azure.com/fabrikam/_apis/wit/attachments?fileName=imageAsFileAttachment.png&api-version=5.0 这是我目前的代码我不知道如何将图像发送到此端点?我的图像以数据uri

我正在使用Javascript(jQuery)发布到Azure DevOps rest API,以上载一个简单的图像。但是,我无法让它工作

除了了解我需要向这个端点发布一篇文章之外,没有太多详细的文档

POST https://dev.azure.com/fabrikam/_apis/wit/attachments?fileName=imageAsFileAttachment.png&api-version=5.0 
这是我目前的代码我不知道如何将图像发送到此端点?我的图像以数据uri格式存在

var dataURI = $("img#target").attr("src");
    var url = "https://xxx.visualstudio.com/_apis/wit/attachments?fileName=image.jpg&api-version=5.0";

    jQuery.ajax ({
        url: url,
        type: "POST",
        data: dataURI,
        processData: false,
        contentType: "application/octet-stream;charset=utf-8",
        success: function(data){
            console.log(data);
        }
    });

谢谢你的帮助

我已成功使用PowerShell上载图像,脚本为:

$image = [System.IO.File]::ReadAllBytes("path/to/image.png")
$apiUrl = https://dev.azure.com/_apis...."
$user = ""
$pat = "my-PAT-here"
$base64authInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $pat)))
Invoke-RestMethod -Uri $apiUrl -Method Post -Body $image -Headers @{Authorization=("Basic {0}" -f $base64authInfo) } -ContentType application/json (works also with application/octet-stream)
因此,我们的想法是将图像作为字节数组(二进制)获取,然后将其放入body请求中。


您尝试上载的格式是
dataURI
,尝试将其转换为二进制,检查代码段。

Hi@shayki当您调用API时,是否需要获取访问令牌?Hi@Slay,是的,我使用了个人访问令牌来授权Azure DevOps,请参阅我的更新答案。