javascript - 无法使用 Azure DevOps Rest API 上传图像(二进制)
问题描述
我正在使用 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);
}
});
帮助表示赞赏!
解决方案
我用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
,尝试将其转换为二进制,检查此代码片段。
推荐阅读
- php - PHP减少图像的文件大小
- c# - Asp.net core web api调用简单中间件的Use()扩展方法
- c# - ssh.net throw 操作会话已超时并卡住
- python-3.x - 从不同的路径导入模块(不是文件)
- xamarin.forms - GroupShortNameBinding 添加了一个要点 - 如何删除
- debugging - 编译错误 Sandboxie Open Source v5.40
- python - QTableView 搜索并突出显示项目
- javascript - TouchableOpacity 覆盖其他按钮
- java - 无法识别 Android 活动中的元素
- python - 我正在使用 Foursquare API,并且在没有邮政编码且没有返回任何结果的情况下不断收到错误消息