从磁盘上传到伪造桶,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);
,现在可以使用了,
我正在尝试使用 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);
,现在可以使用了,