2012-10-05 16 views
6

cuando intento obtener el tamaño de archivo por getFileSize() en Google Drive, el resultado es nulo. Sé que el resultado puede ser nulo cuando el archivo no está almacenado en Drive pero el archivo está almacenado en Drive (downloadUrl es diferente de null).Google Drive: el tamaño del archivo es nulo

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); 
    } 

¿Me puede ayudar?

Gracias! aGO!

Respuesta

0

llamada getHeaders().GetContentLength() en la clase HttpResponse (código asume myurl es su URL):

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

Esta respuesta es incorrecta. La pregunta pide file.size. La solicitud es para una lista de archivos, por lo tanto, hay muchos tamaños de archivo, no solo uno. Si esto devuelve un valor, no es el tamaño de ningún archivo, sino el tamaño de la lista que se devuelve. – NameSpace

0

Por favor, intente reproducir el problema con el patio de OAuth 2.0:

https://developers.google.com/oauthplayground

Al utilizar el OAuth juegos podemos enviar solicitudes de primas y comprobar si hay un problema en el API. Intenté reproducirlo yo mismo y funcionó correctamente.

+0

Gracias Cloudio por su ayuda. Si utilizo OAuth playground, puedo ver el tamaño del archivo. Si hago la misma acción con la API de Google Drive, el tamaño es NULL – aGO

+0

¿Está utilizando la última versión de la biblioteca cliente de Java? ¿El problema solo ocurre con un solo archivo? Si es así, ¿puedes compartir uno de los archivos afectados? Todavía no puedo reproducirlo con mis cuentas de prueba. –

+0

Después de la prueba realizada por OAuth playground, funciona ... No puedo explicarlo. Ahora estoy usando la última biblioteca de cliente de Java. Si reproduciré el problema, lo escribiré. ¡Muchas gracias! – aGO

1

Una petición por defecto para una lista de archivos de Google Drive incluirá tamaño del archivo, pero sólo para los archivos donde el tamaño del archivo es no implícitamente nulo. Por ejemplo, las carpetas y las hojas de cálculo de Google (que son simplemente enlaces) serán nulas.

Esto se puede verificar con el expositivo de Drive API. Simplemente solicite filesize y mimtype en el editor de campos. No se incluirá un par clave-valor en la respuesta para los tipos de archivo mencionados, aunque se solicitó un tamaño de archivo, pero se devolverá para otros tipos.

Cuestiones relacionadas