c# - 使用 .NET 将图像上传到 BIM 360 项目
问题描述
如何使用 .NET 将图像上传到 BIM 360 项目?我已经能够使用 Postman 成功地将图像上传到 BIM 360 项目,但是当使用相同的代码执行相同的功能时,我收到一条错误消息:
"{\"code\":1001,\"message\":\"image has contents that are not what they are reported to be; image_content_type is invalid; \"}"
我在 .NET 中使用的代码如下:
var client3 = new RestClient("https://developer.api.autodesk.com/hq/v1/accounts/" + accountId + "/projects/" + targetProject + "/image");
var request3 = new RestRequest(Method.PATCH);
request3.AddHeader("cache-control", "no-cache");
request3.AddHeader("Authorization", "Bearer " + bearer.access_token);
request3.AddHeader("Content-Type", "multipart/form-data");
request3.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
request3.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"chunk\"; filename=\"C:\\Users\\Nathan\\Desktop\\logo.png\"\r\n" +
"Content-Type: image/png\r\n\r\n\r\n" +
"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n" +
"Content-Disposition: form-data; name=\"type\"\r\n\r\nimage/png\r\n" +
"------WebKitFormBoundary7MA4YWxkTrZu0gW--",
ParameterType.RequestBody);
IRestResponse response3 = client3.Execute(request3);
string updatedProjectImage = response3.Content;
解决方案
我使用这里的源代码作为参考来创建一个PrepareRequest()
执行我所有请求的函数。我用来完成功能的参数如下:
string updatedProjectImage = PrepareRequest(
"https://developer.api.autodesk.com/hq/v1/accounts/" + accountId + "/projects/" + targetProjectId + "/image",
Method.PATCH,
new Dictionary<string, string>(),
null,
headerParams,
formParams,
fileParams,
new Dictionary<string, string>(),
"multipart/form-data");
标头参数:"Authorization", "Bearer " + bearer.access_token
formParams:("type", "image/png"
格式可以根据图像改变)
文件参数:"file", fileParam
文件参数:
FileParameter fileParam = FileParameter.Create(
"chunk",
GetBytesFromFile(fileName),
Path.GetFileName(fileName),
"multipart/form-data");`
(可以在源代码中找到对 GetBytesFromFile() 函数的制作方式的参考。最后,fileName 包括完整的地址路径)。
推荐阅读
- join - 如何对 BigQuery 中的两个表进行条件连接?
- c# - system.text.json 在序列化时显式设置空属性而忽略未设置的属性
- javascript - 一个箭头函数中的两个返回语句
- laravel - 删除 csv 导出中行尾的空列
- json - Terraform:自定义 json 属性,包括不工作的点
- flutter - 在 Firestore 中保存和收听 HashMap
- database-replication - 我可以在 postgres12 中暂停接收者(订阅者)上的副本吗?
- python - 如何修复 Keyerror:组?
- asp.net - 我可以从 asp.net 应用程序传递 Json 数据以用作 api 而不创建 api
- python - 按下按钮后错误的 Tkinter 小部件网格位置(Python)