php - google - Obtener una lista de archivos por carpeta en Drive SDK
subir archivos a google drive con php (4)
Intento crear una interfaz de usuario web para que los usuarios naveguen por su Google Drive y seleccionar uno o más documentos a los que se hará referencia más adelante en un sitio web desde un DB. Actualmente estoy construyendo una interfaz web usando PHP.
El problema al que me enfrento es que no puedo encontrar una sola función para obtener una lista de archivos por ID de carpeta.
Intenté usar:
$service->children->listChildren($rootFolderId)
... pero eso solo dará a los archivos la identificación de referencia de los archivos dentro de la carpeta (el llamado elemento de recursos para niños), lo que significa que tengo que recorrer esos archivos y crear una llamada para cada uno de ellos para obtener todos los metadatos Necesito mi UI.
Desafortunadamente..
$service->files->list()
... listará TODOS mis archivos sin opciones de filtrado por carpeta.
Me gustaría saber si existe una forma eficiente de extraer una lista de archivos de carpetas de una sola llamada al servidor de Drive. De hecho, recuerdo haber sido capaz de realizar esta toma sobre la antigua API de Google DOC.
Muchas gracias por su ayuda
¿El parámetro de consulta <FOLDER_ID> in parents
archivos y / o carpetas que tengan dicho <FOLDER_ID> en los padres?
En mi opinión, este es el resultado esperado. Formulo esta pregunta porque, en la respuesta anterior, uno lee:
... para enumerar archivos que pertenecen a una carpeta específica.
y la documentación sobre los parámetros de búsqueda explica:
Encuentra todas las carpetas secundarias para la carpeta principal cuyo ID es 1234567.
Añadiré que una lista de Sólo Carpetas podría ser devuelta agregando algo así como
and mimeType=''application/vnd.google-apps.folder''
a la cadena de consulta.
No es necesario usar consultas de búsqueda. Simplemente haga una llamada a GET https://www.googleapis.com/drive/v2/files/ {folderId} / children
https://developers.google.com/drive/v2/reference/children/list
Ahora es fácil, no se preocupe. Si quiere obtener todos los archivos y carpetas de una CARPETA específica, simplemente copie y pegue este código en su proyecto y recuperará todos los archivos y carpetas de la Carpeta específica. Nota: debe tener su propia ID de carpeta
List<File> result = new ArrayList<File>();
Files.List request = null;
try {
request = mService.files().list();//plz replace your FOLDER ID in below line
FileList files = request.setQ("''"+MyFoler_Id+"'' in parents and trashed=false"").execute();
result.addAll(files.getItems());
request.setPageToken(files.getNextPageToken());
}
catch (IOException e)
{
System.out.println("An error occurred: " + e);
request.setPageToken(null);
}
// Imprimir los archivos y el título de la carpeta que hemos recuperado.
for(File f:result)
{
System.out.println("My recvd data "+f.getTitle());
}
Ahora es posible usar el punto final drive.files.list para listar los archivos que pertenecen a una carpeta específica.
Para hacerlo, puede usar el parámetro ?q=
query de la siguiente manera:
GET https://www.googleapis.com/drive/v2/files?q="''<FOLDER_ID>'' in parents"
En PHP, eso sería
$service->files->list(array(''q'' => "''<FOLDER_ID>'' in parents"));