[英]Returning Folder path of a file in google drive
我正在嘗試返回並獲取 Google 驅動器文件的文件夾路徑。 我傳遞的輸入是輸入:文件夾 ID、文件名和 oauth 令牌。
{“id”:“1dVkHw5442B7wMidj”,“名稱”:“路徑”}
下面使用的類:
public static List<File> Search(Object payload,String oauthToken) {
List<File> list = new ArrayList<File>();
List<File> subfolderlist = new ArrayList<File>();
List<File> subQuerylist = new ArrayList<File>();
GoogleCredential credential = new GoogleCredential();
credential.setAccessToken(oauthToken);
try {
_driveService = new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), credential).setApplicationName(appName).build();
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
String filename ="";String mimeType ="";
String modifiedFrom ="";String modifiedTo ="";String fullText ="";
ObjectMapper mapper = new ObjectMapper();
String jsonString =null; String paramquery ="";
jsonString = mapper.writeValueAsString(payload);
JSONObject jsonObject = new JSONObject(jsonString);
String parentId = jsonObject.getString("id");
if(!jsonObject.isNull("name")){
filename = jsonObject.getString("name");
paramquery +=" and ( name contains '" + filename + "' or fullText contains '" + filename + "')";
}
if(!jsonObject.isNull("content")){
fullText = jsonObject.getString("content");
paramquery +=" and fullText contains '" + fullText + "'";
}
if(!jsonObject.isNull("mimeType")){
mimeType = jsonObject.getString("mimeType");
if(mimeType.equals("AllFiles") ){
paramquery +=" and mimeType != 'application/vnd.google-apps.folder'";
}else {
paramquery +=" and mimeType = '" + mimeType + "'";
}
}
if(!jsonObject.isNull("modifiedFrom")){
modifiedFrom = jsonObject.getString("modifiedFrom");
paramquery +=" and modifiedTime > '" + modifiedFrom + "'";
}
if(!jsonObject.isNull("modifiedTo")){
modifiedTo = jsonObject.getString("modifiedTo");
paramquery +=" and modifiedTime < '" + modifiedTo + "'";
}
String subfolderquery = " and mimeType = 'application/vnd.google-apps.folder'";
subfolderlist = ExecQuery(_driveService,subfolderquery,parentId);
list = ExecQuery(_driveService,paramquery,parentId);
int i = 0;
while (i < subfolderlist.size()) {
File file = subfolderlist.get(i);
subQuerylist = ExecQuery(_driveService,subfolderquery,file.getId());
if(!subQuerylist.isEmpty()) {
subfolderlist.addAll(subQuerylist);
}
i++;
}
int j = 0;
while (j < subfolderlist.size()) {
File file = subfolderlist.get(j);
subQuerylist = ExecQuery(_driveService,paramquery,file.getId());
if(!subQuerylist.isEmpty()) {
list.addAll(subQuerylist);
}
j++;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
但它只返回文件詳細信息和父文件夾 ID。
如何檢索文件的完整路徑?
他們確實有父母,但父母是財產而不是文件的位置。 通過遵循文件夾和子文件夾的嵌套假設的路徑具有想象力。
Google Drive 文件不能有路徑的原因是您可以在同一文件夾中擁有兩個具有相同名稱的不同 mimeType 的不同文件。 同樣截至目前(將來會被棄用)一個文件可以同時具有多個父級。
要了解子文件夾中文件的嵌套層次結構,您可以做的最接近的事情是迭代地遍歷文件父級的父級,直到到達root
- “我的驅動器”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.