2012-10-05 16 views
6

kiedy próbuję uzyskać rozmiar pliku przez getFileSize() na Dysku Google wynik jest zerowy. Wiem, że wynik może być zerowy, gdy plik nie jest przechowywany na Dysku, ale plik jest przechowywany na Dysku (downloadUrl różni się od wartości NULL).Dysk Google: rozmiar pliku jest zerowy

Drive lService = new Builder(new NetHttpTransport(), new JacksonFactory(), lCredential).setApplicationName("TODO").build(); 
    FileList files = lService.files().list().execute(); 

    List<FileDTO> lResult = new ArrayList<FileDTO>(); 
    for (File lFile : files.getItems()) { 
     DriveFileDTO lFileDTO = new DriveFileDTO(); 
     lFileDTO.setName(lFile.getTitle()); 
     lFileDTO.setMimeType(lFile.getMimeType()); 
     lFileDTO.setSize(lFile.getFileSize()); // <-- FileSize = NULL 

     lFileDTO.setUrl(lFile.getDownloadUrl()); 

     lResult.add(lFileDTO); 
    } 

Czy możesz mi pomóc?

Dzięki! aGO!

Odpowiedz

0

połączeń getHeaders().GetContentLength() na klasy HttpResponse (kod zakłada myurl jest adres URL):

HttpResponse resp = service.getRequestFactory().buildGetRequest(new GenericUrl(myurl)).execute(); 
Log.v("abc","file size is : " + resp.getHeaders().getContentLength()); 
+0

Ta odpowiedź jest niepoprawna. Pytanie prosi o file.size. Żądanie dotyczy listy plików, dlatego istnieje wiele rozmiarów plików, a nie tylko jeden. Jeśli to zwróci wartość, nie będzie to rozmiar żadnego pliku, lecz rozmiar zwracanej listy. – NameSpace

0

Spróbuj odtwarzając problem z OAuth 2.0 Playground:

https://developers.google.com/oauthplayground

Za pomocą OAuth Playground możemy wysłać surowe wnioski i sprawdzić, czy istnieje problem w API. Próbowałem go odtworzyć i działało poprawnie.

+0

Dziękuję Cloudio za pomoc. Jeśli korzystam z placu zabaw OAuth, widzę rozmiar pliku. Jeśli wykonam tę samą czynność za pomocą interfejsu API Dysku Google, rozmiar wynosi NULL – aGO

+0

Czy używasz najnowszej wersji biblioteki klienta Java? Czy problem dotyczy tylko jednego pliku? Jeśli tak, czy możesz udostępnić jeden z plików, których dotyczy problem? Nadal nie mogę go odtworzyć za pomocą moich kont testowych. –

+0

Po teście przez plac zabaw OAuth działa ... Nie mogę tego wyjaśnić. Teraz używam najnowszej biblioteki klienta Java. Jeśli powtórzę ten problem, napiszę to. Wielkie dzięki! – aGO

1

Domyślna prośba o listę plików z Dysku Google będą obejmować rozmiar pliku, ale tylko dla plików, gdy rozmiar pliku jest nie jest domyślnie pusty. Na przykład foldery i arkusze kalkulacyjne Google (które są po prostu linkami) będą miały wartość null.

Można to sprawdzić za pomocą interfejsu API Drive API. Po prostu poproś pliki filesize i mimtype w edytorze pól. Para klucz-wartość nie zostanie uwzględniona w odpowiedzi dla wymienionych typów plików, mimo że zażądano pliku - ale zostanie zwrócona dla innych typów.