【问题标题】:Can't upload image (binary) using Azure DevOps Rest API无法使用 Azure DevOps Rest API 上传图像(二进制)
【发布时间】:2019-10-16 22:23:07
【问题描述】:

我正在使用 Javascript (jQuery) 对 Azure DevOps REST API 进行 POST 以上传简单图像。但是,我无法让它工作。

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);
        }
    });

帮助表示赞赏!

【问题讨论】:

    标签: javascript jquery rest azure-devops azure-devops-rest-api


    【解决方案1】:

    我用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代码sn-p。

    【讨论】:

    • 您好@shayki,当您调用 API 时,您需要获取访问令牌吗?
    • 嗨@Slay,是的,我使用个人访问令牌来授权 Azure DevOps,请参阅我的更新答案。
    猜你喜欢
    • 2020-05-25
    • 2020-09-13
    • 2022-07-17
    • 2020-06-12
    • 2018-06-02
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多