无法使用Azure DevOps Rest API上传图像(二进制)

时间:2019-05-31 09:20:24

标签: javascript jquery azure rest azure-devops

我正在使用JavaScript(jquery)进行POST,以使devops rest API上载一个简单的图像。但是,我无法使其正常工作。

https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/attachments/create?view=azure-devops-rest-5.0#upload_a_binary_file上没有太多详细的文档,除了了解我需要在此端点上发表文章。

POST https://dev.azure.com/fabrikam/_apis/wit/attachments?fileName=imageAsFileAttachment.png&api-version=5.0 

这是我当前的代码。 我不知道如何将图像发送到该端点?我的图像以data-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);
        }
    });

帮助表示感谢!

1 个答案:

答案 0 :(得分:0)

我已成功使用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)

因此,我们的想法是将图像获取为字节数组(作为二进制),然后将其放入正文请求中。

您尝试上传的格式为dataURI,请尝试将其转换为二进制格式,然后检查this代码段。