Невозможно загрузить изображение (двоичное) с помощью API отдыха Azure DevOps - PullRequest
2 голосов
/ 31 мая 2019

Я использую Javascript (jQuery) для создания API-интерфейса отдыха DevOps POST для Azure для загрузки простого изображения. Но мне не удается заставить его работать.

На 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 голосов
/ 02 июня 2019

Мне удалось загрузить изображение с помощью 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, попробуйте преобразовать его в двоичный, отметьте этот фрагмент кода.

...