在 Azure 项目中创建附件不起作用

Posted

技术标签:

【中文标题】在 Azure 项目中创建附件不起作用【英文标题】:Create Attachment in Azure Project is not working 【发布时间】:2022-01-19 10:54:33 【问题描述】:

。在开始时创建附件。但现在使用相同的代码和相同的图像在每次调用时创建黑色图像。 https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/attachments/create?view=azure-devops-rest-6.0#examples

代码示例

$data = fopen("test.png", 'rb');
$size = filesize($file);
$contents = fread($data, $size);
fclose($data);
$encodedData = base64_encode($contents);
        
$url = "https://dev.azure.com/OrganizationName/ProjectId/_apis/wit/attachments?fileName=test.png&uploadType=simple&api-version=6.0";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$header = array("Authorization:Basic ".base64_encode($params['username'].":".$params['token']),"Content-Type:application/octet-stream");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
if ($params['request']) 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($encodedData));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

回应是

stdClass Object
    (
    [id] => f1f55c9e-8f48-4408-90f0-69ebb3c4d0ff
    [url] => https://dev.azure.com/muhammadhaneef0757/749218ab-92a7-4ed1-86d8-738d8c3888e8/_apis/wit/attachments/f1f55c9e-8f48-4408-90f0-69ebb3c4d0ff?fileName=test.png
    )
when i check url in browser there is showing black image

【问题讨论】:

【参考方案1】:

已解决的代码示例

$data = fopen("test.png", 'rb');
$size = filesize($file);
$contents = fread($data, $size);
fclose($data);
        
$url = "https://dev.azure.com/OrganizationName/ProjectId/_apis/wit/attachments?fileName=test.png&uploadType=simple&api-version=6.0";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$header = array("Authorization:Basic ".base64_encode($params['username'].":".$params['token']),"Content-Type:application/octet-stream");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $contents);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$response = json_decode($response);

与工作项的链接

$postRequest = [];
$postRequest[] = ["op"=>"add",
"path"=> ("/relations/-"),
'from' => null,
"value"=> ["rel"=>"AttachedFile",
            "url"=>$response->url
            
            ]
];
$url = "https://dev.azure.com/OrganizationName/ProjectId/_apis/wit/workitems/workitemId?api-version=6.0";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$header = array("Authorization:Basic ".base64_encode($params['username'].":".$params['token']),"Content-Type:application/json-patch+json");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postRequest));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

【讨论】:

您的答案可以通过添加有关代码的作用以及它如何帮助您的更多信息来改进。

以上是关于在 Azure 项目中创建附件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel-8 项目中创建数据不起作用,如何解决?

由于文件间依赖关系,在 Xcode 中创建存档不起作用

从 azure 逻辑应用程序创建一个不起作用

当我执行代码+测试时,Azure 函数中的计时器触发器不起作用

为啥在 RegisterController 中创建函数在 laravel 中不起作用

在 mysql 中创建函数不起作用 - 错误 1064