2017-02-15 64 views
0

我在做什么错? 我有自动化,我有桶,我有文件,但我无法上传它,它太大,无法使用UploadObject。UploadChunk Autodesk API

这里是我的代码上传的部分

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; 

回答

0

好像你正在使用的.Net Forge SDK和C#。

一个例子使用的块位于here

一个chunk需要是至少2Mb的(我们推荐最小5Mb的,但2Mb的由系统执行)。只有最后一块可以小于2 Mb - 详情请参阅this article

看来你的数学计算块长度是不正确的,当使用上面列出的示例,我打印块范围定义,所以你可以与你比较。

希望它有帮助,

+0

谢谢你cyrille你的评论帮了我很多。但有一件事仍然困扰着我,我刚刚测试了你告诉我的例子,并且一个22mb的文件上传了240个文件,这是不对的(至少我不这么认为) –

+0

你试过下载它吗使用来自同一样本的下载命令并比较结果?嘿应该是一样的。让我知道如果不是 – cyrille

+0

我使用了一个保管箱文件,我下载了该文件,然后将其写入我的服务器,然后将其上传到伪造存储区以翻译它。任何想法如何改善? ps:每5mb大块花费大约1分钟。 –