【问题标题】:UploadChunk Autodesk APIUploadChunk Autodesk API
【发布时间】:2017-07-04 12:30:31
【问题描述】:

我做错了什么? 我有授权,我有存储桶,我有文件但我不能上传它,而且它太大而无法使用 UploadObject。

这是我上传代码的部分

using (StreamReader streamReader = new StreamReader(filePath))
            {   Byte[] buffer = new Byte[2097153];
                var QtdeBytesFaltantes = streamReader.BaseStream.Length;
                var byteInicio = 0;
                var byteFim = 0;
                while (QtdeBytesFaltantes > 0)
                {
                    byteFim = await streamReader.BaseStream.ReadAsync(buffer, 0, buffer.Length);
                    await objectsApi.UploadChunkAsync(bucketKey,
                        Path.GetFileName(filePath),
                        (int)streamReader.BaseStream.Length,
                        "bytes " + byteInicio + "-" + byteFim + "/" + (int)streamReader.BaseStream.Length,
                        "IdUnicoDaSessao",
                        streamReader.BaseStream);

                    QtdeBytesFaltantes -= buffer.Length;
                    byteInicio = byteFim + 1;
                }

                dynamic response = await objectsApi.GetObjectAsync(bucketKey, Path.GetFileName(filePath));

                return response;

【问题讨论】:

    标签: autodesk autodesk-forge autodesk-data-management


    【解决方案1】:

    看来您正在使用.Net Forge SDK 和 C#。

    使用块的示例位于here

    一个块至少需要 2Mb(我们建议至少 5Mb,但系统强制要求 2Mb)。只有最后一段可以小于 2 Mb - 请参阅 this article 了解详细信息。

    您计算块长度的数学似乎不正确,当使用上面列出的示例时,我会打印块范围定义,因此您可以与您的比较。

    希望对你有帮助,

    【讨论】:

    • 感谢 cyrille,您的评论对我帮助很大。但有一件事仍然困扰着我,我刚刚测试了你告诉我的例子,一个 22mb 的文件需要 240 秒才能上传,这是不对的(至少我不这么认为)
    • 您是否在使用相同示例的下载命令后尝试下载并比较结果?嘿应该是一样的。如果没有,请告诉我
    • 我使用一个保管箱文件,我下载该文件,然后将其写入我的服务器,然后上传到伪造存储桶进行翻译。关于如何改进的任何想法? ps:每 5mb 块大约需要 1 分钟。
    • 不是真的,除了写入您的服务器。您可以只使用内存来节省时间和空间,但 Forge API 还不允许您从 URI 下载到存储桶。目前唯一能做到这一点的 API 是 Design Automation API。
    猜你喜欢
    • 2019-09-12
    • 2016-11-16
    • 2016-09-01
    • 2017-03-25
    • 2021-11-15
    • 2017-01-12
    • 2019-11-16
    • 2015-08-31
    • 2019-04-21
    相关资源
    最近更新 更多