Загрузка изображения в проект BIM 360 с использованием .NET - PullRequest
0 голосов
/ 18 января 2019

Как загрузить изображение в проект BIM 360 с помощью .NET? Я успешно смог загрузить изображение в проект 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;

1 Ответ

0 голосов
/ 22 января 2019

Я использовал исходный код код здесь как ссылку для создания функции 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");

headerParams: "Authorization", "Bearer " + bearer.access_token

formParams: "type", "image/png" (формат может меняться в зависимости от изображения)

fileParams: "file", fileParam

fileParam:

FileParameter fileParam = FileParameter.Create(
"chunk", 
GetBytesFromFile(fileName), 
Path.GetFileName(fileName), 
"multipart/form-data");`

(Ссылку на то, как была создана функция GetBytesFromFile (), можно найти в исходном коде. Наконец, fileName включает полный адресный путь).

...