загрузить в кузницу с диска, c #

Я пытаюсь загрузить DWF в корзину моего кузнечного приложения (уже созданную и работающую правильно) с диска на C # с помощью RestSharp

Я получаю успешный ответ на свой запрос PUT, но когда я пытаюсь преобразовать DWF с помощью производного API модели, манифест задания возвращает состояние сбоя с кодом ошибки «DWF2D-Not_A_DWF_Error»

Мне не удалось найти примеры для справки (большинство из них находятся в curl или имеют дело с модельным контентом уже на bim360)

Есть идеи, что может быть не так с моим запросом PUT для загрузки в корзину?

byte[] byteFile = GetBinaryFile($"C:\\temp\\RoomView_{this.guid}.dwf");
RestClient client = new RestClient($"https://developer.api.autodesk.com/oss/v2/buckets/{this._bucket_key}/objects/RoomView_{this.guid}.dwf");
RestRequest request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer " + _auth_token.access_token);
request.AddHeader("Content-Length", byteFile.Length.ToString());
request.AddParameter("application/octet-stream", byteFile);

var response = client.Execute(request);

GetBinaryFile выглядит так:

private byte[] GetBinaryFile(string filename)
    {
        byte[] bytes;
        using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
        {
            bytes = new byte[file.Length];
            file.Read(bytes, 0, (int)file.Length);
        }
        return bytes;
    }

person r.schmitt    schedule 11.03.2019    source источник
comment
заменил request.AddParameter("application/octet-stream", byteFile); на request.AddParameter("requestBody", byteFile, ParameterType.RequestBody); и теперь он работает,   -  person r.schmitt    schedule 14.03.2019


Ответы (2)


Вы можете загрузить с помощью пакета Forge .NET и найти образец здесь ( возобновляемый). Это должно быть проще, чем использовать RestSharp ...

Обновить

Используя только restsharp, примерно так:

    request.AddHeader("Content-Type", MimeType(filePath));
    request.AddHeader("Content-Disposition", string.Format("file; filename=\"{0}\"", Path.GetFileNameWithoutExtension(filePath)));
    request.AddParameter(MimeType(filePath), File.ReadAllBytes(filePath), ParameterType.RequestBody);
person Augusto Goncalves    schedule 11.03.2019
comment
Я хочу сохранить этот легкий вес, пакет forge .net полон бесполезного раздувания, а образец кода, на который вы ссылаетесь, длиннее, чем все мое приложение, только для запроса на загрузку. Я думаю, что использовать rest Sharp намного проще. Пожалуйста, попробуйте ответить на мой вопрос, если можете - person r.schmitt; 11.03.2019
comment
извините за это, пакет Nuget - это просто код (без образцов и прочего). Я попробую с RestSharp - person Augusto Goncalves; 11.03.2019

заменил request.AddParameter("application/octet-stream", byteFile); with request.AddParameter("requestBody", byteFile, ParameterType.RequestBody); и теперь работает,

person r.schmitt    schedule 09.09.2019