Skip to content

Uploading an attachment to Azure DevOps Server using Rest API from a JavaScript application

I’m looking for an example on how to generate the request body when uploading an attachment to Azure DevOps Server. Looking at the documentation here, it notes the content for the body should be “[BINARY FILE CONTENT]”. The content of the body is coming from a URL (https://someURL/images/abc.png for example). How do I get from fetch(url) -> binary content to put in the POST request to create the attachment?



Found a solution that works. For reference here’s the code:

        //Get the stream from the content URL
        getStreamData(screenshot.src).then(function (streamData) {

            //Get the blob data from the stream
            streamData.blob().then(function (blob) {

                //upload the attachment 
                uploadAttachment(blob, fileName).then(function (res) {
                    console.log("Attachment uploaded successfully: ", res);

                    //Update work item with attachment link
                    linkAttachmentToWorkitem(res.url, <workItemID>);

The key to all of this, for me anyway, was adding

processData: false

to the ajax settings, for the POST request, in the uploadAttachment function.