【问题标题】:How does the UploadObjectAsync() method work?UploadObjectAsync() 方法是如何工作的?
【发布时间】:2019-05-20 02:42:55
【问题描述】:

https://forge.autodesk.com/en/docs/bim360/v1/tutorials/documen-management/upload-document/

我正在按照上面的教程通过 Autodesk Forge 将文件上传到 BIM 360 文件夹。我已达到第 6 步:将文件上传到存储对象,我正在尝试使用 UploadObjectAsync() 方法上传文件,但我收到一条错误消息: 从“System.Web.HttpInputStream”上的“ReadTimeout”获取值时出错,我不确定如何解决此问题。

是我使用了错误的方法还是代码中缺少某些内容?以下是我在 .NET 上使用的方法。

HttpPostedFile file = req.Files[0];
ObjectsApi objectsApi = new ObjectsApi();
dynamic objects = await objectsApi.UploadObjectAsync(bucketKey, objectName, file.ContentLength, file.InputStream);

【问题讨论】:

  • 我不确定,但我看到您将输入流分配给body,但您从不使用它。然后您再次使用file.InputStream。也许您已通过将流分配给 body 将其推进到最后,这会导致问题。
  • 对不起,我正在测试该代码并将编辑上面的问题以删除它

标签: c# .net autodesk-forge autodesk-bim360


【解决方案1】:

尝试使用文件中StreamReader 的底层流进行上传,而不是使用多部分形式的原始InputStream

using (StreamReader streamReader = new StreamReader(fileSavePath))
{
    await objects.UploadObjectAsync(bucketKey, objectName,(int)streamReader.BaseStream.Length, streamReader.BaseStream, "application/octet-stream");
    ...
}

鉴于UploadObjectAsync 及其链接方法UploadObjectAsyncWith(代码here)是如何实现的,您最好保存发布的文件,然后上传它而不是管道流。查看示例here

【讨论】:

  • 感谢使用与上面代码类似的方法后,它现在可以工作了。
猜你喜欢
  • 2013-03-11
  • 2012-04-21
  • 2016-07-26
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多