从磁盘上传到伪造桶,c#

upload to forge bucket from disk, c#

我正在尝试使用 RestSharp 在 C# 中将 DWF 从磁盘上传到我的 forge 应用程序的存储桶(已经创建并正常运行)

我的 PUT 请求得到了成功的响应,但是当我尝试使用模型衍生 API 转换 DWF 时,作业的清单 returns 失败状态,并出现错误代码 "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;
    }

您可以使用 Forge .NET package, and you can find a sample here 上传(可恢复)。这应该比使用 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);

替换了 request.AddParameter("application/octet-stream", byteFile); with request.AddParameter("requestBody", byteFile, ParameterType.RequestBody);,现在可以使用了,