2013-10-14 3 views
0

Я использую свойство quotaBytedUsed 'при получении Files используя авторизованный запрос на получение - Files.list.Drive SDK Get Folder Size

Я преобразовываю длинное значение, полученное в размер файла в KB/MB/Gb, если необходимо.

Однако размер всех полученных папок составляет 1 КБ. Это значение не отражает общую сумму всех содержимого в папке.

Как я могу получить эту сумму (если возможно без дополнительного запроса на сервер)?

Код, используемый для преобразования «quotaBytesUsed» размера файла является

private string[] SizeSuffixes = new[] { "B", "KB", "MB", "GB", "TB" }; 

private string SizeConvert(long? fileSize) 
    { 
     if (!fileSize.HasValue) 
      return ""; 

     var size = fileSize.Value; 

     if (size <= 1024) 
     { 
      return "1 KB"; 
     } 

     var suffixIndex = 0; 

     while (size > 1024) 
     { 
      size = size/1024; 

      suffixIndex++; 
     } 

     return size.ToString(CultureInfo.InvariantCulture.NumberFormat) + " " + SizeSuffixes[suffixIndex]; 
    } 

ответ

3

Вы получаете размер объекта папки, а не его содержимое. Api не поддерживает получение размера содержимого папки.

Учитывая, что один и тот же файл/папка может быть в нескольких папках, я сомневаюсь, что она будет поддерживаться.

Вам нужно рекурсивно вычислить его, например, используя очереди задач приложения.